@Optional () @Host () выдает "Не удается создать экземпляр циклической зависимости!" ошибка - PullRequest
0 голосов
/ 15 мая 2018

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

Когда я использую @Optional () @Host () Decorator, я все еще получаю «Не могу создать циклическую зависимость!»Ошибка.

Есть ли способы исправить это или другое предложение для решения.

Редактировать: https://stackblitz.com/edit/angular-3zjnog?file=src%2Fapp%2Fapp.module.ts

Так выглядит мой комплимент.

import { Component, OnInit, Input, AfterViewInit, Optional, Host } from '@angular/core';

@Component({
  selector: 'app-mycomponent',
  templateUrl: './data.component.html',
  styleUrls: ['./data.component.css']
})

export class DataComponent implements AfterViewInit {

  host: any;
  @Input() data: any = null;

  constructor(
    @Optional() @Host() host: DataComponent
  ) {
    this.host = host;
  }

  ngAfterViewInit() {

    if (!this.data) {
      this.data = this.host.data;
    }

  }

}

1 Ответ

0 голосов
/ 15 мая 2018

Если вам нужно сгенерировать HTML на сервере, сгенерируйте все это на сервере и поместите в [innerHTML] или разместите на другом сервере и вставьте iframe. То, что вы делаете, не то, для чего был создан Angular.

Что касается вопроса, вам не нужен @Host (). Просто используйте:

constructor(private host: ElementRef) {}

ngAfterViewInit() { this.host.nativeElement.focus(); } //with focus-trigger as example
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...