【发布时间】:2021-03-24 07:45:11
【问题描述】:
我想将我的组件使用的服务接口与其实现分开(以简化功能强大的手工模拟的创建,它确实发生了),并将实现注入为使用它的组件的依赖项。这种方法在 Java Spring 后端很常见。
所以,如果我有这样的代码:
export abstract class AbstractMyService {// Defines the interface of the service
...
}
export class MyService extends AbstractMyService {// The concrete implementation
...
}
@Component({
selector: 'app-myComponent',
templateUrl: './my.component.html',
styleUrls: ['./my.component.css']
})
export class MyComponent implements OnInit {
constructor(
private readonly service: AbstractMyService) {
}
...
}
我如何确保当MyComponent 在应用程序中被实例化时,它有一个MyService 类型的对象传递给它的构造函数?
我知道如果我不分离接口和实现(所以MyService 是一个具体的类,AbstractMyService 不存在),我可以简单地这样做:
@Injectable({
providedIn: 'root'
})
export class MyService {
...
}
我是否只需将MyService 注释为@Injectable?还是我必须做一些更复杂的事情?
【问题讨论】:
标签: angular dependency-injection derived-class