在Angular中,依赖注入是一个重要的概念,它包括了继承和服务两个方面。我们可以通过继承来共享依赖注入中声明的服务,并将其注入到子组件中。下面是一个示例,演示如何实现继承和服务依赖注入:
父组件中声明一个服务:
import { Injectable } from '@angular/core';
@Injectable()
export class DataService {
data: string[] = ['foo', 'bar', 'baz'];
}
子组件中注入该服务:
import { Component, OnInit } from '@angular/core';
import { DataService } from '../data.service';
@Component({
selector: 'app-child',
template: `
Child Component
- {{ item }}
`
})
export class ChildComponent implements OnInit {
data: string[] = [];
constructor(private dataService: DataService) {}
ngOnInit() {
this.data = this.dataService.data;
}
}
在上面的示例中,我们将DataService服务注入到ChildComponent中并将其存储在dataService属性中。我们在ngOnInit钩子函数中调用该服务,并将其返回的数据存储在data属性中,这个数据将用于子组件的渲染。
现在我们在父组件中创建一个新的服务MyDataService,然后在子组件中创建一个新的子类,继承父类的服务。子类中可以添加自定义功能:
import { Injectable } from '@angular/core';
import { DataService } from './data.service';
@Injectable()
export class MyDataService extends DataService {
constructor() {
super();
}
// 新的功能
doSomethingSpecial() {
console.log('Hello from MyDataService!');
}
}
在子组件中,我们将使用新的MyDataService服务。
import { Component, OnInit } from '@angular/core';
import { MyDataService } from '../my-data.service';
@Component({
selector: 'app-child',
template: `
Child Component
- {{ item }}
`
})
export class MyChildComponent implements OnInit {
data: string[] = [];
constructor(private myDataService: MyDataService) {}
ngOnInit() {
this.data =
下一篇:Angular隐藏导航箭头