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

String interpolation of an object is not working because of the initialisation in 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>

和下面的class在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,因为即使您以后订阅,Behavior Subject 也会为您提供最后发出的值。例如:-

stock$ = new BehaviorSubject(null);