在Angular中,我们通常使用@Injectable
装饰器来注入类。然而,有时候我们可能需要在不使用@Injectable
装饰器的情况下手动注入类。
以下是一个解决方法的示例:
MyService
:export class MyService {
getData(): string {
return "Hello World";
}
}
MyService
类。我们可以使用providers
属性来指定要注入的类:import { Component, OnInit } from '@angular/core';
import { MyService } from './my.service';
@Component({
selector: 'app-my-component',
template: `{{ data }}`,
providers: [MyService] // 手动注入 MyService 类
})
export class MyComponent implements OnInit {
data: string;
constructor(private myService: MyService) { }
ngOnInit() {
this.data = this.myService.getData();
}
}
providers
数组中注册MyService
类,以便在整个应用程序中共享该类的实例:import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { MyComponent } from './my.component';
import { MyService } from './my.service';
@NgModule({
imports: [BrowserModule],
declarations: [MyComponent],
providers: [MyService], // 注册 MyService 类
bootstrap: [MyComponent]
})
export class AppModule { }
通过这种方式,我们可以手动注入MyService
类,而无需使用@Injectable
装饰器。请注意,在模块中注册MyService
类是非常重要的,以确保在整个应用程序中共享该类的实例。
希望这个示例能对你有所帮助!