Angular 使用*ngIf,按钮将以角度消失
我试图使用按钮将行添加到现有材质表中。但是,当我使用Angular 使用*ngIf,按钮将以角度消失,angular,typescript,datatable,angular-material,row,Angular,Typescript,Datatable,Angular Material,Row,我试图使用按钮将行添加到现有材质表中。但是,当我使用*ngIf时,按钮不会呈现 HTML <button mat-raised-button color="accent" (click)="onAddRow()" *ngIf="addForm.get('rows')">Add</button>
*ngIf
时,按钮不会呈现
HTML
<button mat-raised-button color="accent"
(click)="onAddRow()"
*ngIf="addForm.get('rows')">Add</button>
ngIf
需要一个布尔值
如果传递一个方法,将使用该方法的稳定返回值。如果该值不是布尔值,则必须为truthy才能呈现元素
如果希望从方法返回一个项目数组,可以使用length
属性作为truthy值。如果数组中没有项,则不会显示元素
<button mat-raised-button color="accent"
(click)="onAddRow()"
*ngIf="addForm.get('rows').length">Add</button>
添加
ngIf
需要一个布尔值
如果传递一个方法,将使用该方法的稳定返回值。如果该值不是布尔值,则必须为truthy才能呈现元素
如果希望从方法返回一个项目数组,可以使用length
属性作为truthy值。如果数组中没有项,则不会显示元素
<button mat-raised-button color="accent"
(click)="onAddRow()"
*ngIf="addForm.get('rows').length">Add</button>
添加
您的问题不在于按钮。这是因为formArray控件是在表单之外创建的。因此,当你要求它的时候,什么也不会得到回报。因此,如果返回值未定义,ngIf不允许其可见
按如下所示更改构造函数
constructor(private fb: FormBuilder) {
this.addForm = this.fb.group({
project: [null ]
});
this.addForm.addControl("rows", new FormArray([]));
}
你的问题不在于按钮。这是因为formArray控件是在表单之外创建的。因此,当你要求它的时候,什么也不会得到回报。因此,如果返回值未定义,ngIf不允许其可见 按如下所示更改构造函数
constructor(private fb: FormBuilder) {
this.addForm = this.fb.group({
project: [null ]
});
this.addForm.addControl("rows", new FormArray([]));
}
您不能执行addform.get('rows'),您的addform不包含行,rows form数组不在addform中两者都是不同的您不能执行addform.get('rows'),您的addform不包含行,rows form数组不在addform中两者都是不同的按钮本身在我添加ngif时不呈现。因此,添加您建议的内容并没有改善。它不会呈现,因为addForm.get('rows')不会返回真实的内容。这就是为什么我建议转换为FormArray我尝试了这两个选项,但恐怕没有解决。请检查更新的答案。谢谢,它已经解决了。当我添加ngif时,按钮本身不会呈现。因此,添加您建议的内容并没有改善。它不会呈现,因为addForm.get('rows')不会返回真实的内容。这就是为什么我建议转换为FormArray。我尝试了这两个选项,但恐怕没有解决。请检查更新的答案。谢谢,它已经解决了。添加ngif时按钮本身不会呈现。添加ngif时按钮本身不会呈现。