gpt4 book ai didi

作为组件输入的 Angular2 传递函数不起作用

转载 作者:太空狗 更新时间:2023-10-29 17:06:17 24 4
gpt4 key购买 nike

我有一个将函数作为输入的组件。我已经从父级传递了这个函数。

虽然调用了该函数,但该函数无法访问声明该函数的实例的依赖项。

这是组件

@Component({
selector: 'custom-element',
template: `
{{val}}
`
})
export class CustomElement {
@Input() valFn: () => string;

get val(): string {
return this.valFn();
}
}

下面是组件的使用方式

@Injectable()
export class CustomService {
getVal(): string {
return 'Hello world';
}
}

@Component({
selector: 'my-app',
template: `
<custom-element [valFn]="customVal"></custom-element>
`,
})
export class App {
constructor(private service: CustomService) {
}
customVal(): string {
return this.service.getVal();
}
}

当我运行这个应用程序时,我在控制台中收到一条错误消息:Cannot read property 'getVal' of undefined

这里是一个针对这个问题的 plunker。

https://plnkr.co/edit/oQ229rXqOU9Zu1wQx18b?p=preview

最佳答案

如果你传递方法,你需要.bind(this):

<custom-element [valFn]="customVal.bind(this)"></custom-element>

export class App {
constructor(private service: CustomService) {
}
customVal(): string {
return this.service.getVal();
}
customValFn = this.customVal.bind(this);
}

<custom-element [valFn]="customValFn"></custom-element>

关于作为组件输入的 Angular2 传递函数不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42574759/

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