有条件地展示一个孩子或另一个孩子

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有条件地展示一个孩子或另一个孩子相关的知识,希望对你有一定的参考价值。

我正在尝试创建一个可以渲染内部html的组件,但是在单击时它会用可编辑的版本替换它自己。我觉得这样的事情会起作用:

<field (onClick)="isEditModeOn = true;">
  <read-value>
      <h2>{{ someValue }}</h2>
  </read-only>
  <editable>
      <input type="text" [value]="someValue"/>
  </editable>
</field>

然后在field.component中我可以引用那些内部组件:

@Component({
  ...
})
class Field {
  ...
  isEditModeOn = false;

  @ContentChild(ReadValueComponent) readValue: ReadValueComponent;
  @ContentChild(EditableComponent) editable: EditableComponent;
  ...

  onEdit() {
    if(isEditModeOn) {
      // render `editable`
    } else {
      // render `readValue`
    }
  }
}

但是如何在field模板中渲染其中一个组件?

答案

你可以简单地使用*ngIf

<field (onClick)="isEditModeOn = true;">
    <read-value *ngIf="!isEditModeOn">
        <h2>{{ someValue }}</h2>
    </read-only>
    <editable *ngIf="isEditModeOn">
        <input type="text" [value]="someValue"/>
    </editable>
</field>
另一答案

我提出以下表格:

模板:

<field (click)="isEditModeOn = !isEditModeOn;">

      <h2 *ngIf="!isEditModeOn">{{ someValue }}</h2>


      <input *ngIf="isEditModeOn" type="text" [value]="someValue"/>

</field>

零件:

 @Component({
      ...
    })
    class Field {
      ...
      isEditModeOn: boolean = false;

      ...

      @HostListener('click') onEdit() {
        if(isEditModeOn) {
          // render `editable`
        } else {
          // render `readValue`
        }
      }
    }

以上是关于有条件地展示一个孩子或另一个孩子的主要内容,如果未能解决你的问题,请参考以下文章

有条件地导入 python 类的片段

从一个表中选择与客户关联的工单记录或另一表中的客户子项

IllegalStateException,指定的孩子已经有一个父母 - ListFragment

Sphinx - 在代码块片段中使用省略号 (...)

Fragments - 指定的孩子已经有一个父母。您必须先在孩子的父母上调用 removeView()

我家的孩子,爱乱花钱的孩子怎么样去教育他她?ximeconn为你解答!