Проблема в том, что parent('analog-clock-canvas')
выбирает по идентификатору, и все компоненты имеют одно и то же, поскольку вы жестко закодировали его (я говорю о <div id="analog-clock-canvas"></div>
). Выбор по идентификатору принесет первый соответствующий результат, независимо от того, сколько существует в DOM.
Я рекомендую создать уникальный идентификатор в ngOnInit
вашего компонента и присвоить его div
. Мне нравится использовать GUID. Например, используя эту реализацию:
analog-clock.component.ts
...
private containerId: string;
...
ngOnInit() {
this.containerId = this.uuidv4();
}
...
// Taken from:
// https://stackoverflow.com/a/2117523/12398336
private uuidv4() {
return ([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g, c =>
(c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)
);
}
...
private drawing = function(p: any) {
p.setup = () => {
p.createCanvas(400, 400).parent(this.containerId);
...
analog-clock.component.html
<div [id]=[containerId]></div>