由于TS中的初始化,对象的字符串插值不起作用



我正在创建一个简单的应用程序,目前只有两个页面:

(1( 股票的完整列表。(2( 单个股票的详细信息。

当你点击股票列表中的特定股票时,你应该被引导到另一个页面阅读其信息。

这是我使用的服务:

export class StockService {
stock$ = new Subject();
public setStock(stock: Stock){
this.stock$.next(stock);
}
public getStock():Observable<any>{
return this.stock$.asObservable();
}
constructor() { }
}

在我的页面(1(上,我有以下HTML:

<div class="container">

<app-stock-object
*ngFor="let stock of stocks"
[stock] = "stock"
(click)="setSelected(stock)"
routerLink="/stock-details">
</app-stock-object>
</div>

以及TS 中的以下类

export class StocksComponent implements OnInit {

@Input() stocks: Stock[] = Stock_data;
constructor(private stockService: StockService) { }
ngOnInit(): void {
}
public setSelected(stock: Stock){
this.stockService.setStock(stock);
}
}

我(试图(取回股票的第二页:

export class StockDetailsComponent implements OnInit {
//Initilialising without a value ...
stock: any;
constructor(private stockService: StockService) { }
ngOnInit(): void {
this.stockService.getStock().subscribe(stock=>{
//The message below is shown with the selected stock.
console.log("stock -->",stock);
this.stock = stock;
})
}
}

和HTML:

<p>the stock details are: {{stock?.name}}</p>

我认为这是因为我初始化股票时没有值来声明其类型。我是Angular的新手,因此我不知道解决这个问题的最佳解决方案是什么。提前感谢!

请尝试使用BehaviorSubject而不是Subject,因为即使您将来订阅,行为主题也会给您最后发出的值。例如:-

stock$ = new BehaviorSubject(null);

最新更新