从组件输入中导出 ngIf 值
Derive ngIf value from component input
当我想在缺少某些输入的情况下从树中删除一个组件时,我需要在组件声明中指定它两次,如下所示:
<app-block-with-some-data *ngIf="dataForBlock" [data]="dataForBlock">
</app-block-with-some-data>
我想在保持相同行为的同时删除重复项。
如何实现?
这里StackBlitz demo了解详情。
那是不可能的,因为 ngIf 是一个指令,app-block-with-some-data 是一个组件。
仅供参考:但是如果您不想使用与您的值相同的名称,您可以使用下一个代码来使用 friendly-naming。
<app-block-with-some-data
*ngIf="dataForBlock; let data"
[data]="data"
></app-block-with-some-data>
事实上,您可以使用数据输入 属性 绑定到 app-block-with-some-data 组件模板中的 ngif。
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'data-component',
templateUrl: './data.component.html',
styleUrls: ['./data.component.css']
})
export class DataComponent implements OnInit {
Input() data: string;
组件模板:
<div *ngIf = "data">
...
</div>
编辑:
这个问题相关的case其实并不反对DRY。这里的重复对于组件是必要的。有些事情需要弄清楚。如果一个组件是 rendered/unrendered 取决于条件,你的团队中的人会直觉地认为它是用模板内的 ngIf 完成的。如果它不在它应该在的位置那么它实际上是 code-readability 的权衡,除非它是一个特定的组件,其他人都知道它通过提供的数据处理 ngIf 的工作(渲染逻辑)。
当我想在缺少某些输入的情况下从树中删除一个组件时,我需要在组件声明中指定它两次,如下所示:
<app-block-with-some-data *ngIf="dataForBlock" [data]="dataForBlock">
</app-block-with-some-data>
我想在保持相同行为的同时删除重复项。
如何实现?
这里StackBlitz demo了解详情。
那是不可能的,因为 ngIf 是一个指令,app-block-with-some-data 是一个组件。
仅供参考:但是如果您不想使用与您的值相同的名称,您可以使用下一个代码来使用 friendly-naming。
<app-block-with-some-data
*ngIf="dataForBlock; let data"
[data]="data"
></app-block-with-some-data>
事实上,您可以使用数据输入 属性 绑定到 app-block-with-some-data 组件模板中的 ngif。
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'data-component',
templateUrl: './data.component.html',
styleUrls: ['./data.component.css']
})
export class DataComponent implements OnInit {
Input() data: string;
组件模板:
<div *ngIf = "data">
...
</div>
编辑: 这个问题相关的case其实并不反对DRY。这里的重复对于组件是必要的。有些事情需要弄清楚。如果一个组件是 rendered/unrendered 取决于条件,你的团队中的人会直觉地认为它是用模板内的 ngIf 完成的。如果它不在它应该在的位置那么它实际上是 code-readability 的权衡,除非它是一个特定的组件,其他人都知道它通过提供的数据处理 ngIf 的工作(渲染逻辑)。