我只是想知道Angular 4 Injection Token是如何工作的以及幕后发生的事情。我在创建具有相同名称的令牌1和令牌2,但它是如何设置为不同的值?任何了解这个过程的人,请帮助我。
export class InjectionTokenService {
private value: string;
checkInjectionToken(): string {
const name = 'token';
const token1 = new InjectionToken<string>(name);
const token2 = new InjectionToken<string>(name);
console.log(token1);
console.log(token2);
if (token1 === token2) {
return this.value = 'Both having same token';
} else {
return this.value = 'Tokens are not same';
}
}
}
export class InjectionTokenService {
private value: string;
checkInjectionToken(): string {
const name = 'token';
const token1 = new InjectionToken<string>(name);
const token2 = new InjectionToken<string>(name);
console.log(token1);
console.log(token2);
if (token1 === token2) {
return this.value = 'Both having same token';
} else {
return this.value = 'Tokens are not same';
}
}
}
答案 0 :(得分:1)
Angular DI默认使用类型作为注册提供程序的键或查找构造函数参数的提供程序。
InjectionToken是密钥的替代形式,当类型不足以唯一标识提供者时,可以使用该形式。例如,如果你想提供3个配置值,它们都是string类型,那么输入类型我们就不足以告诉DI注入哪一个。
通常不支持原始类型作为提供者的密钥。
因此,InjectionToken只是一个可以与其他值区分开来的值,可以作为注册表中的键。