Самый простой способ сделать это — расширить базовый компонент:
@Component({
selector: 'base-component',
template: '',
changeDetection: ChangeDetectionStrategy.OnPush
})
export class BaseComponent implements OnInit {
ngOnInit (): void {
console.log('hello world');
}
}
и используйте extends BaseComponent
в своих дочерних компонентах, например:
@Component({
selector: 'child-component',
template: '',
changeDetection: ChangeDetectionStrategy.OnPush
})
export class ChildComponent extends BaseComponent {
// your logic
}
Другой способ: использование службы с локальным поставщиком для каждого компонента:
@Injectable()
export class ActionService {
constructor(){
console.log('hello world');
}
}
и внедрить его (providers: [ActionService]
) в ваш компонент, который должен иметь эту логику, каждый компонент будет иметь отдельный экземпляр этой службы:
@Component({
selector: 'main-page',
templateUrl: './main-page.component.html',
styleUrls: ['./main-page.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush,
providers: [ActionService]
})
export class MainPageComponent {}
как по мне: первое решение намного лучше, чем каждый раз обслуживать, но решать вам :)
person
Dmitry Sobolevsky
schedule
15.07.2020