Angular 2打字稿中@Inject和@Injectable有什么区别
What is the difference between @Inject and @Injectable in Angular 2 typescript
我不明白什么时候使用@Inject,什么时候使用@Injectable?
import {Component, Inject, provide} from '@angular/core';
import {Hamburger} from '../services/hamburger';
export class App {
bunType: string;
constructor(@Inject(Hamburger) h) {
this.bunType = h.bun.type;
}
}
还有..
import {Injectable} from '@angular/core';
import {Bun} from './bun';
@Injectable()
export class Hamburger {
constructor(public bun: Bun) {
}
}
@Injectable
装饰器的目的是实际设置一些元数据,关于将哪些依赖项注入到关联的 class 的构造函数中。这是一个不需要参数的 class 装饰器。如果没有这个装饰器,将不会注入任何依赖...
@Injectable()
export class SomeService {
constructor(private http:Http) {
}
}
必须在构造函数参数级别使用 @Inject
装饰器来指定有关要注入的元素的元数据。没有它,使用参数的类型(obj:SomeType
等同于 @Inject(SomeType) obj
)。
@Injectable()
export class SomeService {
constructor(@Inject(Http) private http:Http, @Inject('sometoken') obj) {
}
}
你一定要读懂这个区别- @Inject and @Injectable
@Inject()
是一种让Angular知道必须注入参数的手动机制。
使用 TypeScript 时,@Inject 仅用于注入原语。
例如:
export class AppComponent {
encryption = this.chatWidget.chatSocket.encryption;
constructor(@Inject(ChatWidget) private chatWidget) { }
}
@Injectable()
让 Angular 知道 class 可以与依赖项一起使用
注射器。
例如:
@Injectable()
export class ChatWidget {
constructor(
public authService: AuthService,
public authWidget: AuthWidget,
public chatSocket: ChatSocket) { }
}
在上面的示例中,Angular 的注入器使用类型信息确定将什么注入到 ChatWidget 的构造函数中
我不明白什么时候使用@Inject,什么时候使用@Injectable?
import {Component, Inject, provide} from '@angular/core';
import {Hamburger} from '../services/hamburger';
export class App {
bunType: string;
constructor(@Inject(Hamburger) h) {
this.bunType = h.bun.type;
}
}
还有..
import {Injectable} from '@angular/core';
import {Bun} from './bun';
@Injectable()
export class Hamburger {
constructor(public bun: Bun) {
}
}
@Injectable
装饰器的目的是实际设置一些元数据,关于将哪些依赖项注入到关联的 class 的构造函数中。这是一个不需要参数的 class 装饰器。如果没有这个装饰器,将不会注入任何依赖...
@Injectable()
export class SomeService {
constructor(private http:Http) {
}
}
必须在构造函数参数级别使用 @Inject
装饰器来指定有关要注入的元素的元数据。没有它,使用参数的类型(obj:SomeType
等同于 @Inject(SomeType) obj
)。
@Injectable()
export class SomeService {
constructor(@Inject(Http) private http:Http, @Inject('sometoken') obj) {
}
}
你一定要读懂这个区别- @Inject and @Injectable
@Inject()
是一种让Angular知道必须注入参数的手动机制。
使用 TypeScript 时,@Inject 仅用于注入原语。 例如:
export class AppComponent {
encryption = this.chatWidget.chatSocket.encryption;
constructor(@Inject(ChatWidget) private chatWidget) { }
}
@Injectable()
让 Angular 知道 class 可以与依赖项一起使用 注射器。
例如:
@Injectable()
export class ChatWidget {
constructor(
public authService: AuthService,
public authWidget: AuthWidget,
public chatSocket: ChatSocket) { }
}
在上面的示例中,Angular 的注入器使用类型信息确定将什么注入到 ChatWidget 的构造函数中