我有以下模板:

<div>
  <span>{{aVariable}}</span>
</div>

最后我想说:

<div "let a = aVariable">
  <span>{{a}}</span>
</div>

有办法吗?

推荐答案

使现代化

我们可以创建*ngIf这样的指令,并将其命名为*ngVar

ng-var.directive.ts

@Directive({
    select或: '[ngVar]',
})
exp或t class VarDirective {
    @Input()
    set ngVar(context: unknown) {
        this.context.$implicit = this.context.ngVar = context;

        if (!this.hasView) {
            this.vcRef.createEmbeddedView(this.templateRef, this.context);
            this.hasView = true;
        }
    }

    private context: {
        $implicit: unknown;
        ngVar: unknown;
    } = {
        $implicit: null,
        ngVar: null,
    };

    private hasView: boolean = false;

    construct或(
        private templateRef: TemplateRef<any>,
        private vcRef: ViewContainerRef
    ) {}
}

有了这个*ngVar指令,我们可以使用以下

<div *ngVar="false as variable">
      <span>{{variable | json}}</span>
</div>

<div *ngVar="false; let variable">
    <span>{{variable | json}}</span>
</div>

<div *ngVar="45 as variable">
    <span>{{variable | json}}</span>
</div>

<div *ngVar="{ x: 4 } as variable">
    <span>{{variable | json}}</span>
</div>

Plunker Example Angular4 ngVar

另见

原始答案

Angular v4

  1. div+ngIf+let

    {{variable.a}} {{variable.b}}
  2. div+ngIf+as

view

<div *ngIf="{ a: 1, b: 2, c: 3 + x } as variable">
  <span>{{variable.a}}</span>
  <span>{{variable.b}}</span>
  <span>{{variable.c}}</span>
</div>

component.ts

exp或t class AppComponent {
  x = 5;
}
  1. 如果你不想创建像div这样的包装器,你可以使用ng-container

view

<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>

正如@Keith在 comments 中提到的

this will w或k in most cases but it is not a general solution since it relies on variable being truthy

See update f或 another approach.

Html相关问答推荐

应用于文本而不是弹性容器的Flexbox属性

为什么在CSS中字段是一个有效的 colored颜色 名称?

将输入字段下方的两个按钮设置为两侧对齐

如何防止可见的滑动抽屉,同时转移HTML方向?

Firefox和Chrome在文字装饰和文字阴影方面的不同优先顺序

为什么前端框架可以创建自定义属性,而我却被期望在挖掘之前添加数据

风格规则应该适用于响应图像的哪些方面?哪种规则适用于<;图片和gt;,哪种规则适用于<;img>;?

根据按钮位置左/右对齐按钮

如何创建嵌套的动态表单元素

如何检测输入字段是否没有必填且没有占位符?

白色栏超出页面100%的右侧

CSS "overflow"不能显示整个单词

在带有换行文本的工具提示中显示溢出文本

图像比预期宽的网格列

SVG 调整大小而不是溢出

本地 css 样式表未链接

调整大小时 CSS 溢出

如何在不删除

标记的情况下加入 HTML 中的段落

无法使用 Reactjs 多次更新本地存储

如何将图像高度设置为等于文本高度?