Создание директивы для отслеживания угловых крюков жизненного цикла - PullRequest
0 голосов
/ 26 сентября 2019

Можно ли в любом случае создать директиву для обнаружения каждого хука жизненного цикла, такого как ngOnDestroy (), и внедрить некоторый сборщик мусора до того, как компонент будет уничтожен?

Я хочу сделать это, чтобы компонент не запускался и не вызывал утечку памяти

1 Ответ

0 голосов
/ 26 сентября 2019

Я думаю, что есть два варианта для

<app-mycomp cleanup></app-mycomp>

1) Директива знает свой хост-компонент.Таким образом, вы можете вставить хост в конструктор

...
constructor(private host: MycompComponent) { }
...

2), и если директива не знает хост.Это немного сложно. Хост-компонент должен предоставить себя

@Component({
  selector: 'app-mycomp',
  templateUrl: './mycomp.component.html',
  styleUrls: ['./mycomp.component.css'],
  providers: [{  
    provide: 'cleanable', 
    useExisting: forwardRef(()=> MycompComponent)
  }]
})
export class MycompComponent extends Cleanable implements OnInit { ... }

Теперь вы можете добавить его также в директиву

constructor(@Inject('cleanable') private host: Cleanable) { ... }

Наконец, в директиве вы можете определитькрючки жизненного цикла.

Вот блик стека

...