我使用ngFor
来显示不同的button
。我需要在其他按钮上使用指令,但不是全部。
所以我编写了这段代码:
<div *ngFor="let btn of btns">
<button {{ btn.useDirective ? 'appMyDirective' : '' }} ></button>
</div>
但我收到此错误
错误:模板解析错误: 意外的结束标签“按钮”。标签已被另一个标签关闭时,可能会发生这种情况。
答案 0 :(得分:2)
您的语法无效。要存档所需的内容,请执行以下操作:
<div *ngFor="let btn of btns">
<button *ngIf="btn.useDirective" appMyDirective></button>
<button *ngIf="!btn.useDirective"></button>
</div>
答案 1 :(得分:2)
将您的指令更新为基于状态触发为例,请考虑此
@Directive({
selector: '[appHello]'
})
export class HelloDirective {
@Input() appHello:boolean;
constructor(private elem: ElementRef, private renderer: Renderer2) { }
ngAfterViewInit() {
if (this.appHello !== false ) {
this.renderer.setProperty(this.elem.nativeElement, 'innerHTML', 'Hi ?');
}
}
}
模板
<div *ngFor="let btn of btns">
<button [appHello]="btn.useDirective">Hi </button>
</div>
如果将值设置为true,则该伪指令将起作用,否则将不会发生
答案 2 :(得分:1)
请尝试使用下面的内容。
<div *ngFor="let btn of btns">
<button appMyDirective *ngIf="btn.useDirective"></button>
<button *ngIf="!btn.useDirective"></button>
</div>