【发布时间】:2017-11-05 00:10:26
【问题描述】:
如何从指令注册到 Angular2 中组件的输入?
具体来说,我已经知道this solution,但我想在没有父包的情况下这样做。
我有这个来自 Angular2 站点的 sn-p 代码,但我无法让它工作以向组件发送数据:
// Directive
import { Directive, ElementRef, Input, Output, EventEmitter } from '@angular/core';
@Directive({ selector: '[dirTest]' })
export class dirTestDirective {
@Output() refresh = new EventEmitter<number>();
constructor(private element: ElementRef) {
setInterval(() => {
this.refresh.emit( Math.random() );
}, 1000);
}
}
// Component
import {
Input,
Output,
Component,
OnChanges,
SimpleChanges,
} from '@angular/core';
@Component({
selector: 'simple',
template: '<div></div>',
})
export class SimpleComponent implements OnChanges {
@Input() refresh: number;
// This never gets triggered
ngOnChanges(changes: SimpleChanges) {
console.log(changes);
}
}
<!-- Get this together -->
<simple dirTest></simple>
最终我得到了这个还不错的解决方案,但我仍然认为input 更好。
如果有人有更好的解决方案,请发布。
http://plnkr.co/edit/FZsIfLfvtf3EjkGGGBlC
【问题讨论】:
-
当您说“无法正常工作”时,您的意思是您没有看到控制台日志?
-
没有。他们永远不会被束缚,我知道我可以在外部定义一个回调并将其设置为
Simple组件以从Directive发送数据并发送到Simple输入,但我想直接从dirTest.
标签: angular data-binding directive eventemitter