Angular 类型错误,角度5:无法读取属性';长度';
但我还是犯了以下错误: 类型错误无法读取连接到html第9行的属性“length”: 试验Angular 类型错误,角度5:无法读取属性';长度';,angular,html,typescript,Angular,Html,Typescript,但我还是犯了以下错误: 类型错误无法读取连接到html第9行的属性“length”: 试验 </mat-header-cell> <mat-cell fxFlex="40%" mat-cell *matCellDef="let row; let element" line 9: [ngStyle]="checkIfTrue(element.name) && {'background-color':'lightgreen'}">
</mat-header-cell>
<mat-cell fxFlex="40%" mat-cell *matCellDef="let row; let element"
line 9: [ngStyle]="checkIfTrue(element.name) && {'background-color':'lightgreen'}">
<mat-checkbox [ngStyle]="checkIfTrue(element.name) && {'background-color':'white'}" (click)="$event.stopPropagation()" (change)="$event ? selection.toggle(row) : null" [checked]="selection.isSelected(row)">
</mat-checkbox>
</mat-cell>
</ng-container>
我想,所有的值都已初始化。因为html中未定义element.name会导致错误,即使将其更改为element?.name,也无法工作。您可以执行以下操作:
<mat-cell *ngIf="element.name" fxFlex="40%" mat-cell *matCellDef="let row; let element"
[ngStyle]="checkIfTrue(element.name) && {'background-color':'lightgreen'}">
尝试if(name)
而不是if(name.length>0)
元素。模板中未定义name
。将其更改为element?name
@ConnorsFan建议的技巧应该有效,并且您的错误不应该相同。或者您可以尝试name?.length
我不确定它是否在中工作。ts
或者您没有为元素分配任何值,而元素就在上面,您的代码正在从空白元素检索属性,或者您可以只在if(name.length>0)上面写一个控制台.log(name)
{
语句,然后您将获得传递给它的值。错误来自checkIfTrue(),即因为element.name是未定义的,它没有长度属性yyes。如果您没有传递某个内容,您将检查未定义的.length
。未定义的没有长度属性。检查If(name&&name.length)
@profiler@baao我知道,但即使我将其更改为element。?name它也会导致错误,因为它是methods参数。正如@baao所说,如果您在函数中选中if(name&&name.length)
,则html不会连接到该错误@fatemefazlies。
<mat-cell *ngIf="element.name" fxFlex="40%" mat-cell *matCellDef="let row; let element"
[ngStyle]="checkIfTrue(element.name) && {'background-color':'lightgreen'}">