Sum*_*wal 43 angular2-components angular
我有一个实现,其中父级希望通过使用@Input
子组件中可用的参数将某些数据传递给子组件.但是,此数据传输是可选的,父母可能会或可能不会根据要求传递它.是否可以在组件中包含可选的输入参数.我在下面描述了一个场景:
<parent>
<child [showName]="true"></child> //passing parameter
<child></child> //not willing to passing any parameter
</parent>
//child component definition
@Component {
selector:'app-child',
template:`<h1>Hi Children!</h1>
<span *ngIf="showName">Alex!</span>`
}
export class child {
@Input showName: boolean;
constructor() { }
}
Run Code Online (Sandbox Code Playgroud)
Ara*_*ind 80
您可以使用(?)运算符,如下所示
import {Component,Input} from '@angular/core';
@Component({
selector:'child',
template:`<h1>Hi Children!</h1>
<span *ngIf="showName">Alex!</span>`
})
export class ChildComponent {
@Input() showName?: boolean;
constructor() { }
}
Run Code Online (Sandbox Code Playgroud)
使用子组件的父组件将为
@Component({
selector: 'my-app',
template: `
<div>
<h2>Hello {{name}}</h2>
<child [showName]="true"></child>
<child ></child>
</div>
`,
})
export class App {
name:string;
constructor() {
this.name = 'Angular2'
}
}
Run Code Online (Sandbox Code Playgroud)
Gün*_*uer 24
默认情况下,输入值是可选的.只有在尝试访问未实际传递的输入属性时(因为这些输入是undefined
),您的代码才会失败.
您可以实现OnChanges或使输入时的值实际传递让你的代码执行的二传手,而不是一个属性.
export class child {
@Input set showName(value: boolean) {
this._showName = value;
doSomethingWhenShowNameIsPassed(value);
}
constructor() { }
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
44214 次 |
最近记录: |