在下面的函数中,我尝试调用 ProductServices 的 getSelectProduct 方法。
private getSelectedProduct = () => {
const productId = this.activatedRoute.snapshot.paramMap.get('productId');
console.log('selectedProduct', productId)
this.productService.getSelectedProduct(productId).subscribe(product => {
this.selectedProduct = product;
})
}
Typescript 在这个语句中的productId 下给了我一个红色的波浪线:
getSelectedProduct(productId)
。错误信息是:
'string | 类型的参数null' 不可分配给'string' 类型的参数。 类型“null”不可分配给类型“string”。ts(2345) const ProductId: 字符串 |空
这是所选产品的声明:
public selectedProduct?:ProductModel;
这是 getSelectedProduct 方法:
public getSelectedProduct = (productId:string) => {
const product = this.productSignal().products.find(product => product._id === productId)
return of(product)
}
基于 Guy Incognito 建议:考虑 ProductId 为 null 时的情况;
private getSelectedProduct = () => {
const productId = this.activatedRoute.snapshot.paramMap.get('productId');
console.log('selectedProduct', productId)
if(productId !== null) {
this.productService.getSelectedProduct(productId).subscribe(product => {
this.selectedProduct = product;
console.log('selectedProduct', this.selectedProduct)
})
}
}