gpt4 book ai didi

Angular 通过@Output() 向父组件传递参数

转载 作者:行者123 更新时间:2023-12-05 01:44:56 29 4
gpt4 key购买 nike

我有两个组件,我们称它们为 contianer 和 itemList。 itemList 中有可点击的项目,我需要将点击事件(包括被点击项目的索引)传递给容器。

itemList.ts:

...
@Output()
itemClicked = new EventEmitter<number>();

@Output()
somethingElse = new EventEmitter<void>();

...
this.itemClicked.emit(index);
...
this.somethingElse.emit();
...

容器.html:

...
<itemList (itemClicked)="itemClicked($index)"
(somethingElse)="somethingElse()" ... >
...
</itemList>
...

容器.ts:

...
itemClicked(observer: Observer<number>): void {
// where do I get the index from ?
console.debug('itemClicked( #' + index + ')');
}

somethingElse(observer: Observer<void>): void {
console.debug('somethingElse()');
}
...

问题在 container.ts 中:我从哪里获取索引?

来自 somethingElse 的事件已成功传递到容器,所以这不可能是完全错误的。事实上,这是我试图构建 itemClicked 的模式。但是我无法将 itemClicked(...) 的签名更改为正确的工作版本。

最佳答案

我认为您的问题出在您试图获取不存在的 $index 的容器模板中。你应该使用 $event。

...
<itemList (itemClicked)="itemClicked($event)"
(somethingElse)="somethingElse()" ... >
...
</itemList>

...

这应该允许您访问从 itemClicked 发出的值。然后在您的容器组件中,您可以在它的 itemClicked 函数中访问索引:

...
itemClicked(index: number): void {
// the index will appear here
console.debug('itemClicked( #' + index + ')');
}

somethingElse(): void {
// You didn't pass any argument here
console.debug('somethingElse()');
}
...

请注意,参数是索引本身,而不是一个可观察对象。

希望对您有所帮助。祝你好运。

关于Angular 通过@Output() 向父组件传递参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44068086/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com