2016-02-02 165 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