Cập nhật
Chúng ta chỉ có thể tạo ra lệnh like *ngIf
và gọi nó*ngVar
ng-var.directive.ts
@Directive({
selector: '[ngVar]',
})
export class VarDirective {
@Input()
set ngVar(context: any) {
this.context.$implicit = this.context.ngVar = context;
this.updateView();
}
context: any = {};
constructor(private vcRef: ViewContainerRef, private templateRef: TemplateRef<any>) {}
updateView() {
this.vcRef.clear();
this.vcRef.createEmbeddedView(this.templateRef, this.context);
}
}
với *ngVar
chỉ thị này, chúng ta có thể sử dụng như sau
<div *ngVar="false as variable">
<span>{{variable | json}}</span>
</div>
hoặc là
<div *ngVar="false; let variable">
<span>{{variable | json}}</span>
</div>
hoặc là
<div *ngVar="45 as variable">
<span>{{variable | json}}</span>
</div>
hoặc là
<div *ngVar="{ x: 4 } as variable">
<span>{{variable | json}}</span>
</div>
Ví dụ Plunker Angular4 ngVar
Xem thêm
Câu trả lời gốc
Góc v4
1) div
+ ngIf
+let
<div *ngIf="{ a: 1, b: 2 }; let variable">
<span>{{variable.a}}</span>
<span>{{variable.b}}</span>
</div>
2) div
+ ngIf
+as
lượt xem
<div *ngIf="{ a: 1, b: 2, c: 3 + x } as variable">
<span>{{variable.a}}</span>
<span>{{variable.b}}</span>
<span>{{variable.c}}</span>
</div>
thành phần
export class AppComponent {
x = 5;
}
3) Nếu bạn không muốn tạo trình bao bọc như div
bạn có thể sử dụngng-container
lượt xem
<ng-container *ngIf="{ a: 1, b: 2, c: 3 + x } as variable">
<span>{{variable.a}}</span>
<span>{{variable.b}}</span>
<span>{{variable.c}}</span>
</ng-container>
Như @Keith đã đề cập trong các bình luận
điều này sẽ hoạt động trong hầu hết các trường hợp nhưng nó không phải là một giải pháp chung vì nó phụ thuộc vào biến là sự thật
Xem cập nhật cho một cách tiếp cận khác.