【问题标题】:Input property not binding on attribute selector输入属性未绑定到属性选择器
【发布时间】:2016-05-11 06:33:25
【问题描述】:

早安,

我有以下 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 事件中未定义。

【问题讨论】:

    标签: angular


    【解决方案1】:

    如果您想为fieldname 输入提供字符串文字值,您可以试试这个:

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

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

    使用[fieldname] 将根据与模板关联的组件的元素计算表达式。

    希望对你有帮助, 蒂埃里

    【讨论】:

    • 感谢您的回复,但是这两种情况仍然导致 @Input() 字段名变量在构造函数和 ngOnInit() 事件中都未定义。
    • 你确定吗? ;-) 同意构造函数,但不同意ngOnInit。看到这个 plunkr:plnkr.co/edit/OYZLtURA0lLy6eNPu1Kv?p=preview.
    • 我明白你的意思,我会接受答案 - 但奇怪的是它仍然没有通过。可能不是因为我选择的是属性而不是像您的示例这样的元素吗?
    • 奇怪!我用属性选择器更新了 plunkr,它似乎也能正常工作...如果您有兴趣进行更多调查,请随时为我提供一个 plunkr 进行复制,我会看看...
    • 谢谢先生!!我可能做错了什么,但我现在也这样工作:-)
    猜你喜欢
    • 2012-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-25
    • 1970-01-01
    • 2020-06-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多