8

Jak widać w this plunker, mam dynamiczne dodawanie HTML do jednego z moich elementów, co sprowadza się do tego:Jak kątowa 2 odebrać dynamicznie dodaną dyrektywy routerLink

@Component({ 
    selector: 'my-comp', 
    template: `<span [innerHTML]="link"></span>`, 
}) export class MyComponent { 
    private linkContent = '<a routerLink="/my-route">GoTo Route</a>'; 
    private link; 

    constructor(sanitizer: DomSanitizer) { 
     this.link = sanitizer.bypassSecurityTrustHtml(linkContent); 
    } 
} 

Wynika to w <a routerLink="/my-route">GoTo Route</a> istota dodane do DOM, ale Angular nie wie nic o dyrektywie routerLink dla tego elementu i nie "wiąże się" z nią. Kiedy klikniesz link, spowoduje to całkowite przeładowanie z ponownym ładowaniem (które nie działa w trybie pluna, daje tylko 404).

Pytanie: jak powiedzieć kątowo, aby przejść przez DOM (lub jego część, a nawet pojedynczy element) i wykonać inicjalizację komponentu, jeśli jest to konieczne?

+0

jestem nie jestem pewien, czy rozumiem, co chcesz zrobić, ale, przez twojego Plunkera, domyślam się, że twój problem polega na tym, że link 'login' nie działa, prawda? Jeśli tak, dlaczego korzystasz z 'routerLink' w swojej lokalizacji zamiast używać go w swoim szablonie? – brians69

+0

Hej .. Jak rozwiązać ten problem, aby dynamicznie dodawać router link do kotwicy znacznika z klasy skryptu typu.? Starałem się stworzyć komponent dynamiczny, ale bez powodzenia. Proszę pomóż mi. –

+0

@MeenakshiKumari W końcu nie poszedłem tą ścieżką, ale zrestrukturyzowałem mój kod tak, aby nie zawierał dynamicznych linków. – Dethariel

Odpowiedz

3

Angular2 nie przetwarza HTML dodanego dynamicznie w żaden sposób, z wyjątkiem sanityzacji.

Podanie '<a routerLink="/my-route">GoTo Route</a>' do innerHTML robi dokładnie to, przekazując ten ciąg do DOM, ale nic więcej. Nie ma żadnej instancji dyrektywy routerLink.

Jeśli trzeba dodać kod HTML, który używa dynamicznie Angular2 Wiązania dyrektyw albo składniki można dodać do szablonu HTML składników i dodać ten komponent dynamicznie przy użyciu ViewContainerRef.createComponent() jak wykazano na przykład w Angular 2 dynamic tabs with user-click chosen components

Powiązane problemy