将手动注入器传递给 toSignal 函数以避免上下文外注入错误

将手动注入器传递给 toSignal 函数以避免上下文外注入错误

💡 原文英文,约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中使用。
➡️

继续阅读