Angular 中 forwardRef 有什么作用?
Angular 通过引入 forwardRef 让我们可以在使用构造注入时,使用尚未定义的依赖对象类型。下面我们先看一下如果没有使用 forwardRef ,在开发中可能会遇到的问题:
@Injectable()
class Socket {
constructor(private buffer: Buffer) { }
}
console.log(Buffer); // undefined
@Injectable()
class Buffer {
constructor(@Inject(BUFFER_SIZE) private size: Number) { }
}
console.log(Buffer); // [Function: Buffer]
若运行上面的例子,将会抛出以下异常:
Error: Cannot resolve all parameters for Socket(undefined).
Make sure they all have valid type or annotations
那么要解决上面的问题,最简单的处理方式是交换类定义的顺序。除此之外,我们还可以使用 Angular 提供的 forward reference 特性来解决问题,具体如下:
import { forwardRef } from'@angular2/core';
@Injectable()
class Socket {
constructor(@Inject(forwardRef(() => Buffer))
private buffer) { }
}
class Buffer {
constructor(@Inject(BUFFER_SIZE) private size: Number) { }
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论