首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自定义双向绑定和@输入不匹配角?

自定义双向绑定和@输入不匹配角?
EN

Stack Overflow用户
提问于 2017-04-24 11:38:26
回答 1查看 119关注 0票数 0

我读过一本关于双向绑定的https://blog.thoughtram.io/angular/2016/10/13/two-way-data-binding-in-angular-2.html

同时,角度文档提供了一个访问内部组件属性的示例。

在父组件中,它具有:

代码语言:javascript
复制
 <name-child *ngFor="let name ..." [name]="name"></name-child>

其中[name]引用内部setter(!):

代码语言:javascript
复制
 @Input()
 set name(name: string) {
    this._name =...;
  }

这很清楚。

但是,我看到了下面的示例https://blog.thoughtram.io/angular/2016/10/13/two-way-data-binding-in-angular-2.html

代码语言:javascript
复制
<custom-counter [(counter)]="counterValue"></custom-counter>

其中counter在内部组件中作为@Input在GETTER上!

代码语言:javascript
复制
    @Input()       // <--------     On a getter ??
    get counter()
    {
        return this.counterValue;
    }

    set counter(val)
    {
        this.counterValue = val;
        this.counterChange.emit(this.counterValue);
    }

问题

plnkr中的代码确实像预期的那样工作,但是--我不明白如何在getter上使用@Input

我的意思是-父母应该将值设置为内部设置者。

我错过了什么?

PLNKR

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-24 11:46:34

通过使用游乐场,您始终可以在内部检查类型记录。

例如,这段代码:

代码语言:javascript
复制
class MyClass {
    @Input()       // <--------     On a getter ??
    get counter()
    {
        return this.counterValue;
    }

    set counter(val)
    {
        this.counterValue = val;
        this.counterChange.emit(this.counterValue);
    }
}

将被翻译成

代码语言:javascript
复制
var MyClass = (function () {
    function MyClass() {
    }
    Object.defineProperty(MyClass.prototype, "counter", {
        get: function () {
            return this.counterValue;
        },
        set: function (val) {
            this.counterValue = val;
            this.counterChange.emit(this.counterValue);
        },
        enumerable: true,
        configurable: true
    });
    return MyClass;
}());
__decorate([
    Input() // <--------     On a getter ??
], MyClass.prototype, "counter", null);

如您所见,只有一个带有名称计数器的属性,并且它将使用@Input装饰符进行修饰。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43587055

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档