Angular2:如何给子组件传递属性?
Angular 2: how to pass attributes to child component?
在我的应用程序中,我有 Home 作为根组件和另一个名为 list 的通用组件,我在 Home 中渲染它。
我想将数据作为 属性 传递到来自 XMLHttpRequest 的列表组件。
home.ts
import {Component} from 'angular2/core';
import {DashboardService} from '../../services/dashboard';
import {List} from '../contact/list';
@Component({
selector: 'home',
template:
`
<h3>Home</h3>
<List type="{{type}}"></List>
`
providers: [DashboardService],
directives: [List],
})
export class Home {
private _type: any;
constructor(private _dashboardService: DashboardService) {
this._dashboardService.typeToDisplay()
.subscribe((type) => {
this._type = type;
});
}
}
List.ts
@Component({
selector: 'List',
properties: ['type'],
template: `
<h2>list</h3>
`,
providers: [DashboardService]
})
export class List {
private type: any;
constructor(@Attribute('type') type:string) {
this.type = type;
console.log(type);
}
}
我正在从 typeToDisplay() 方法获取字符串数据,它是一个 Http 请求并分配给类型变量。但是当我作为 属性 传递给列表组件时,我在 List 构造函数中得到 null。
我也试过了,但我得到的是 "type" 字符串。
希望我的问题很清楚。
这种语法
<List type="{{type}}"></List>
正在设置 属性 而不是属性。
要设置属性,请使用
<List attr.type="{{type}}"></List>
或
<List [attr.type]="type"></List>
如果您只想获得 List
中可用的值,请使用
@Input() type: any;
而不是属性注入。
这样,该值在构造函数中尚不可用,仅在 ngOnInit()
或更高版本中可用。
在我的应用程序中,我有 Home 作为根组件和另一个名为 list 的通用组件,我在 Home 中渲染它。
我想将数据作为 属性 传递到来自 XMLHttpRequest 的列表组件。
home.ts
import {Component} from 'angular2/core';
import {DashboardService} from '../../services/dashboard';
import {List} from '../contact/list';
@Component({
selector: 'home',
template:
`
<h3>Home</h3>
<List type="{{type}}"></List>
`
providers: [DashboardService],
directives: [List],
})
export class Home {
private _type: any;
constructor(private _dashboardService: DashboardService) {
this._dashboardService.typeToDisplay()
.subscribe((type) => {
this._type = type;
});
}
}
List.ts
@Component({
selector: 'List',
properties: ['type'],
template: `
<h2>list</h3>
`,
providers: [DashboardService]
})
export class List {
private type: any;
constructor(@Attribute('type') type:string) {
this.type = type;
console.log(type);
}
}
我正在从 typeToDisplay() 方法获取字符串数据,它是一个 Http 请求并分配给类型变量。但是当我作为 属性 传递给列表组件时,我在 List 构造函数中得到 null。
我也试过了,但我得到的是 "type" 字符串。
希望我的问题很清楚。
这种语法
<List type="{{type}}"></List>
正在设置 属性 而不是属性。
要设置属性,请使用
<List attr.type="{{type}}"></List>
或
<List [attr.type]="type"></List>
如果您只想获得 List
中可用的值,请使用
@Input() type: any;
而不是属性注入。
这样,该值在构造函数中尚不可用,仅在 ngOnInit()
或更高版本中可用。