💡
原文英文,约1100词,阅读约需4分钟。
📝
内容提要
在Angular中,构造函数中无法使用必需的信号输入,因为值尚未可用。解决方法是在ngOnInit或ngOnChanges中访问信号输入。使用toSignal函数时出错,因为它在注入上下文之外运行。可以通过传递手动注入器或在runInInjectionContext的回调中调用toSignal来解决。创建StarWarService以调用API并返回Observable,使用信号存储结果,并在组件中显示Jedi和Sith的详细信息。
🎯
关键要点
- 在构造函数中无法使用必需的信号输入,因为值尚未可用。
- 可以在ngOnInit或ngOnChanges生命周期方法中访问必需的信号输入。
- 使用toSignal函数时会出现错误,因为它在注入上下文之外运行。
- 可以通过传递手动注入器或在runInInjectionContext的回调中调用toSignal来解决问题。
- 创建StarWarService以调用API并返回Observable。
- 在StarWarComponent中实现OnInit接口,并在ngOnInit中使用必需的信号输入调用StarWar API。
- 使用inject函数注入组件的Injector。
- 在ngOnInit中,使用toSignal函数创建信号并避免错误。
- 使用runInInjectionContext函数在组件的injector上下文中执行toSignal函数。
- 如果组件有必需的信号输入,可以在ngOnInit或ngOnChanges中访问值进行HTTP请求。
- 结论:必需的信号输入不能在构造函数中调用,必须在ngOnInit或ngOnChanges中使用。
➡️