src/main/webapp/app/plan-board/plan-board.component.html:75:39 - error TS2345: Argument of type 'number | undefined' is not assignable to parameter of type 'number'. Type 'undefined' is not assignable to type 'number'. 75 [nzChecked]="setOfCheckedId.has(planOrder.item!.id)" ~~~~~~~~~~~~~~~~~~ src/main/webapp/app/plan-board/plan-board.component.ts:42:16 42 templateUrl: './plan-board.component.html', ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Error occurs in the template of component PlanBoardComponent.
时间: 2023-07-09 15:54:27 浏览: 156
这个错误提示是 TypeScript 的类型检查器报出来的,意思是 `setOfCheckedId.has()` 方法的参数类型应该是 `number`,但是 `planOrder.item!.id` 表达式的类型是 `number | undefined`,所以不能直接传递给 `setOfCheckedId.has()` 方法。你可以在这个表达式后面添加一个 `!` 来表示这个值一定不是 `undefined`,这样就可以解决这个问题了。修改后的代码如下所示:
```
[nzChecked]="setOfCheckedId.has(planOrder.item!.id!)"
```
或者你也可以先将 `planOrder.item!.id` 提取到一个变量中,再将变量传递给 `setOfCheckedId.has()` 方法:
```
<ng-container *ngFor="let planOrder of planOrders">
<nz-checkbox [nzChecked]="setOfCheckedId.has(getItemId(planOrder))" (nzCheckedChange)="onItemChecked(planOrder, $event)">
</nz-checkbox>
</ng-container>
...
getItemId(planOrder: IPlanOrder): number {
return planOrder.item?.id!;
}
```
这样就可以避免这个类型错误了。
相关问题
ERROR src/main/webapp/app/plan-board/plan-board.component.html:73:45 - error TS2532: Object is possibly 'undefined'. 73 [(nzExpand)]="idToItemMap.get(itemId).expand" ~~~~~~ src/main/webapp/app/plan-board/plan-board.component.ts:42:16 42 templateUrl: './plan-board.component.html', ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Error occurs in the template of component PlanBoardComponent.怎么解决
这个错误提示说明在模板中有一个可能为 undefined 的对象。具体来说,它指的是 "[(nzExpand)]" 属性中的表达式 "idToItemMap.get(itemId).expand" 可能为 undefined。
为了解决这个问题,你可以使用安全导航运算符 "?" 来检查 "idToItemMap.get(itemId)" 是否为 null 或 undefined,并且确保 "expand" 属性也不是 undefined。例如:
```
[(nzExpand)]="idToItemMap.get(itemId)?.expand ?? false"
```
这样就可以避免出现 undefined 的错误,确保你的模板能够正确地编译和运行。另外,你也可以在组件类中添加一些逻辑来确保 "idToItemMap.get(itemId)" 和 "expand" 属性都有有效的值。例如:
```
if (idToItemMap.get(itemId) && idToItemMap.get(itemId).expand !== undefined) {
// do something with idToItemMap.get(itemId).expand
}
```
这样就可以避免出现 undefined 的错误,确保你的组件能够正确地运行。
src/main/webapp/app/plan-board/plan-board.component.html:75:49 - error TS2551: Property 'itemId' does not exist on type 'IPlanOrder'. Did you mean 'item'? 75 [nzChecked]="setOfCheckedId.has(planOrder.itemId)" ~~~~~~ src/main/webapp/app/plan-board/plan-board.component.ts:42:16 42 templateUrl: './plan-board.component.html', ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Error occurs in the template of component PlanBoardComponent.
这个错误提示是 TypeScript 的类型检查器报出来的,意思是 `IPlanOrder` 类型上没有 `itemId` 属性,但是在 `plan-board.component.html` 模板文件的第 75 行中却使用了这个属性。检查一下 `IPlanOrder` 的定义,看看是否应该将 `itemId` 改成 `item`。或者你可以在 `plan-board.component.ts` 文件中声明 `itemId` 属性,或者使用 `item.id` 替代 `itemId`,这样就能避免这个错误了。
阅读全文