2017-04-05 1 views
2

Est-il possible de limiter le contenu entre mes balises ng-content au texte? Comment puis-je faire ceci? Je comprends que je peux utiliser un paramètre d'entrée de type sécurité comme alternative, mais j'aimerais quand même savoir si cela est possible. Merci!Angular - Autorise uniquement le texte dans ng-content

+0

Pourquoi voulez-vous faire ce vs juste en utilisant une propriété d'entrée? – adharris

+0

Préférence personnelle principalement, je le trouve plus facile à utiliser/lire. Je vais utiliser une entrée si nécessaire, mais je suis curieux ... –

Répondre

1
@Component({ 
    selector: 'foo', 
    template: ` 
    <div #wrapper> 
    <ng-content></ng-content> 
    </div> 
    ` 
}) 
export class FooComponent { 
    @ViewChild('wrapper') wrapper; 

    ngAfterContentInit() { 
    var nodes = this.wrapper.childNodes; 
    for (var i = 0; i < nodes.length; i++) { 
     if (nodes[i].nodeType != Node.TEXT_NODE) // or if (nodes[i].nodeType != 3) 
     throw 'Only text is supported as content 
    } 
    } 
} 

Voir aussi javascript check if child node is element or text node

+0

Merci pour la solution. J'espérais que c'était directement soutenu, mais il est utile de voir cette approche. –

+0

Je suis sûr qu'il n'y en a pas actuellement. Heureux d'entendre cela fonctionne pour vous. –