angular - 输出指令 - 按上下文绑定
问题描述
我想使用@Output()
,但在这样的非标准场景中,我不能使用角度语法(somethingChanged)="console.log($event)"
,但我必须通过绑定到上下文来做到这一点:
<nb-icon
[nbPopover]="messagesComponent"
[nbPopoverContext]="{ messages: downloadedMessages, onLoadMoreMessages: ??????}"
>
</nb-icon>
所以我的子组件看起来像:
export class MessagesComponent {
@Input() messages: Message[];
@Output() onLoadMoreMessages = new EventEmitter<Message[]>();
someMethod() {
...
this.onLoadMoreMessages.emit(...);
}
}
我将如何做到这一点?
解决方案
您可以将任何内容作为输入传递,例如整个父组件......虽然这有点奇怪,所以传递一些包装器(例如在角度材料中使用类似的方法:FormControl 被传递给输入):
class MyWrapper {
subject = new Subject();
emit() {
this.subject.next();
}
}
在父母中:
this.onLoadHandler = new MyWrapper();
this.onLodaHandler.subject.subscribe(() => ...)
<nb-icon
[nbPopover]="messagesComponent"
[nbPopoverContext]="{ messages: downloadedMessages, onLoadHandler: onLoadHandler}"
>
</nb-icon>
在孩子中,你有:
someMethod() {
...
this.onLoadHandler.emit(...);
}
推荐阅读
- python-3.x - 在 Python ConfigPraser 模块中解析两个配置文件中的值
- batch-file - 切换到部分时发生崩溃
- arrays - Json读取并转换为数据框
- excel - VBA 中的默认日期格式设置
- php - Laravel Modal不断删除数据库中的最后一个id
- javascript - 为什么 Jquery offset() 在多次点击时触发多次
- ruby-on-rails - 如何增加 rails admin gem 中投递箱的限制
- unity3d - 为什么我在 HoloLens 中的 3d 对象一直跟着我并且不稳定?
- ruby-on-rails - 运行“中间人构建”时发生错误
- google-apps-script - 从 google-apps-script 设置 Auth0 应用程序允许的回调 URL