2016-02-02 211 views
1

好日子,輸入屬性不是屬性選擇

結合我有以下Angular2組件:

import {Component, Input} from 'angular2/core'; 
import {NameValue} from '../models/namevalue'; 
import {CrmService} from '../services/crmservice'; 

@Component({ 
    selector: '[crmlookup]', 
    templateUrl: '/app/directives/rendernamevalue.html' 
}) 

export class CrmLookupComponent { 
    @Input() fieldname: string; 
    public values; 

    constructor(public _crmService: CrmService) { 
    } 

    ngOnInit() { 
     this._crmService.get(this.fieldname).subscribe(res => this.values = res); 
    } 
} 

我的HTML如下所示:

<select crmlookup [fieldname]="new_department"></select> 

它結合很好,但字段名內部輸入字段永遠不會使用我在標記中指定的字符串值進行初始化。

請注意,new_department必須是字符串值,它不是父組件中的屬性。我也試過將它指定爲[fieldname] =「'new_department'」,這也不起作用。該值在構造函數中以及ngOnInit事件中未定義。

回答

2

如果要提供對fieldname輸入字符串文本值,你可以試試這個:

<select crmlookup [fieldname]="'new_department'"></select> 

<select crmlookup fieldname="new_department"></select> 

使用[fieldname]基於組件的元素將計算表達式與模板相關聯。

希望它可以幫助你, 蒂埃裏爲響應

+0

謝謝,但是這兩個情景仍導致@input()字段名變量在構造函數和ngOnInit()事件都被不確定的。 – Edwill

+0

你確定嗎? ;-)同意構造函數,但不適用於'ngOnInit'。看到這個plunkr:http://plnkr.co/edit/OYZLtURA0lLy6eNPu1Kv?p=preview。 –

+0

我明白你的意思了,我會接受答案 - 但奇怪的是它仍然沒有通過。這是不是因爲我選擇了一個屬性而不是像你的例子那樣的元素? – Edwill