Table des matières
1. content " >1. content
2 Projeter plusieurs éléments de contenu/composant" >2 Projeter plusieurs éléments de contenu/composant
使用标签锁定投影位置
3. envelopper sous-éléments et réduisez les couches dom inutiles, similaire au modèle dans vue " >3. envelopper sous-éléments et réduisez les couches dom inutiles, similaire au modèle dans vue
4. 有条件的内容投影" >4. 有条件的内容投影
5. @ContentChild & @ContentChildren" >5. @ContentChild & @ContentChildren
6. @ViewChild & @ViewChildren" >6. @ViewChild & @ViewChildren
Maison interface Web js tutoriel Une brève analyse de la projection de contenu dans l'apprentissage des composants angulaires

Une brève analyse de la projection de contenu dans l'apprentissage des composants angulaires

Aug 09, 2021 am 10:24 AM
angular 组件

Cet article vous guidera à travers la projection de contenu dans les composants Angular. La projection de contenu est très similaire au slot dans Vue. Elle est très utile lors de l'encapsulation de composants. Faisons-en l'expérience ensemble

Une brève analyse de la projection de contenu dans l'apprentissage des composants angulaires

[Tutoriels associés recommandés : "Tutoriel angulaire"]

1. content

Le composant conteneur est écrit comme ceci

<div>
  编号1
  <ng-content></ng-content>
</div>
Copier après la connexion

Le composant métier est utilisé comme ceci

<app-page-container>
	未指定投影位置的内容会被投影到无select属性的区域
</app-page-container>
Copier après la connexion

2 Projeter plusieurs éléments de contenu/composant

Le composant conteneur est écrit. comme ça

  • Verrouillez la projection à l'aide des balises Position

  • Utilisez la classe pour verrouiller la position de la projection

  • Verrouillez la position de la projection avec un nom de composant personnalisé

  • Utilisez des attributs personnalisés pour verrouiller la position de la projection

<div>
  编号2
  <ng-content select="h3"></ng-content>
  <ng-content select=".my-class"></ng-content>
  <ng-content select="app-my-hello"></ng-content>
  <ng-content select="[content]"></ng-content>
</div>
Copier après la connexion

C'est ainsi que les composants métier sont utilisés

<app-page-container>
  <h3 id="使用标签锁定投影位置">使用标签锁定投影位置</h3>
  <div class="my-class">使用class锁定投影位置</div>
  <app-my-hello>使用自定义组件名称锁定投影位置</app-my-hello>
  <div content>使用自定义属性锁定投影位置</div>
</app-page-container>
Copier après la connexion

Démo

Une brève analyse de la projection de contenu dans lapprentissage des composants angulaires

3. envelopper sous-éléments et réduisez les couches dom inutiles, similaire au modèle dans vue

Le composant conteneur est écrit comme ceci

<div>
  编号4
  <ng-content select="question"></ng-content>
</div>
Copier après la connexion
ng-container来包裹子元素,减少不必要的dom层,类似vue中的template

容器组件这样写

<app-page-container>
  <ng-container ngProjectAs="question">
    <p>内容投影酷吗?</p>
    <p>内容投影酷吗?</p>
    <p>内容投影酷吗?</p>
    <p>内容投影酷吗?</p>
  </ng-container>
</app-page-container>
Copier après la connexion

业务组件这样写

<div>
  编号3
  <ng-content select="[button]"></ng-content>
  <p *ngIf="expanded">
    <ng-container [ngTemplateOutlet]="content.templateRef"> </ng-container>
  </p>
</div>
Copier après la connexion

4. 有条件的内容投影

中文网的描述:

  • 如果你的组件需要_有条件地_渲染内容或多次渲染内容,则应配置该组件以接受一个 ng-template 元素,其中包含要有条件渲染的内容。

  • 在这种情况下,不建议使用 ng-content 元素,因为只要组件的使用者提供了内容,即使该组件从未定义 ng-content 元素或该 ng-content 元素位于 ngIf 语句的内部,该内容也总会被初始化。

  • 使用 ng-template 元素,你可以让组件根据你想要的任何条件显式渲染内容,并可以进行多次渲染。在显式渲染 ng-template 元素之前,Angular 不会初始化该元素的内容。

使用ng-container定义我们的投影区块

  • 使用ngTemplateOutlet指令来渲染ng-template元素。

  • 通过内置的动态指令*ngIf来控制是否渲染投影。

<app-page-container>
  <div button>
    <button appToggle>切换</button>
  </div>
  <ng-template appContent>
    <app-my-hello>有条件的内容投影~</app-my-hello>
  </ng-template>
</app-page-container>
Copier après la connexion

在业务组件中我们使用ng-template来包裹我们的实际元素。

my-hello组件只在ngOnInit()做日志输出来观察打印情况。

import { Directive, TemplateRef } from &#39;@angular/core&#39;;

@Directive({
  selector: &#39;[appContent]&#39;,
})
export class ContentDirective {
  constructor(public templateRef: TemplateRef<unknown>) {}
}
Copier après la connexion

现在你会发现页面并没有像前面那么顺利的正常渲染,因为我们的逻辑还没有串通,我们继续。创建一个指令,并在NgModule中注册,一定要注册才能用哦~

指令需要注册哦~

@Directive({
  selector: &#39;[appToggle]&#39;,
})
export class ToggleDirective {
  @HostListener(&#39;click&#39;) toggle() {
    this.app.expanded = !this.app.expanded;
  }
  constructor(public app: PageContainerComponent) {}
}
Copier après la connexion

我们再定义一个指令来控制组件中显示/隐藏的标识

指令需要注册哦~

export class PageContainerComponent implements OnInit {

  expanded: boolean = false;

  @ContentChild(ContentDirective)
  content!: ContentDirective;

}
Copier après la connexion

在我们的容器组件中申明刚才定义的内容指令,页面目前不报错咯~

<div *ngIf="false">
  <ng-content *ngIf="false" select="app-my-hello"></ng-content>
</div>
Copier après la connexion

通过日志可以看到我们在切换容器组件的expanded标识时,只有开启状态my-hello组件才会初始化,下面的这个ngIf虽然在页面看不到渲染的内容,但组件实实在在被初始化过了。

@ContentChild(HelloWorldComp)
helloComp: HelloWorldComp;

@ContentChildren(HelloWorldComp)
helloComps: QueryList<HelloWorldComp>;
Copier après la connexion

5. @ContentChild & @ContentChildren

使用这两个装饰器来对被投影的组件进行操作

使用注解在业务组件中定义被投影的组件

@ViewChild(HelloWorldComp)
helloComp: HelloWorldComp;
  
@ViewChildren(HelloWorldComp)
helloComps QueryList<HelloWorldComp>;
Copier après la connexion

ngAfterContentInit()钩子执行后对被投影组件进行操作

6. @ViewChild & @ViewChildren

使用这两个装饰器来对指接子组件进行操作

使用注解在业务组件中定义子组件

rrreee

ngAfterViewInit()Le composant métier est écrit comme ceci

rrreee

4. Projection de contenu conditionnel

🎜🎜Description du site Web chinois :🎜 🎜🎜🎜Si votre composant doit _🎜conditionnellement 🎜_ restituer le contenu ou restituer le contenu plusieurs fois, vous devez configurer le composant pour qu'il accepte un élément ng-template contenant le contenu à rendre conditionnellement. 🎜🎜🎜🎜Dans ce cas, il n'est pas recommandé d'utiliser l'élément ng-content car tant que l'utilisateur du composant fournit le contenu, même si le composant ne définit jamais l'élément ng-content ou que l'élément ng-content est situé dans ngIf🎜 À l'intérieur de la déclaration, le contenu sera toujours initialisé. 🎜🎜🎜🎜En utilisant l'élément ng-template, vous pouvez demander au composant de restituer explicitement le contenu en fonction de toutes les conditions souhaitées et de le restituer plusieurs fois. Angular n'initialise pas le contenu d'un élément ng-template tant que l'élément n'est pas explicitement rendu. 🎜🎜🎜🎜🎜Utilisez ng-container pour définir notre bloc de projection 🎜🎜🎜🎜🎜Utilisez la directive ngTemplateOutlet pour rendre ng-template élément. 🎜🎜🎜🎜Utilisez l'instruction dynamique intégrée <code>*ngIf pour contrôler si le rendu de la projection est nécessaire. 🎜🎜🎜rrreee🎜🎜Dans le composant métier, nous utilisons ng-template pour envelopper nos éléments réels. Le composant 🎜🎜🎜🎜my-hello enregistre uniquement la sortie dans ngOnInit() pour observer la situation d'impression. 🎜rrreee🎜🎜Maintenant, vous constaterez que la page ne s'affiche pas normalement aussi facilement qu'avant, car notre logique n'a pas encore été de connivence, continuons. Créez une commande et enregistrez-la dans NgModule. Vous devez vous inscrire pour l'utiliser~🎜🎜🎜🎜La commande doit être enregistrée~🎜rrreee🎜🎜Nous définissons une autre commande pour contrôler l'affichage/le logo caché dans le composant🎜. 🎜 🎜🎜La commande doit être enregistrée~🎜rrreee🎜🎜Déclarez la commande de contenu qui vient d'être définie dans notre composant conteneur. La page ne signale actuellement pas d'erreur~🎜🎜rrreee🎜🎜Vous pouvez voir dans le journal que. nous changeons le composant conteneur Lorsqu'il est marqué avec expanded, seul le composant my-hello à l'état ouvert sera initialisé bien que le ngIf suivant. Je ne peux pas voir le contenu rendu sur la page, mais le composant a en fait été initialisé. 🎜🎜rrreee

🎜🎜5. @ContentChild & @ContentChildren🎜🎜🎜🎜🎜Utilisez ces deux décorateurs pour opérer sur le composant projeté🎜🎜🎜 Utilisez des annotations pour définir le composant projeté dans le composant métier🎜🎜rrreee🎜🎜fonctionne sur le composant projeté après l'exécution du hook ngAfterContentInit()🎜🎜

🎜🎜6. @ViewChild & @ViewChildren🎜🎜🎜🎜🎜Utilisez ces deux décorateurs pour opérer sur des sous-composants joints par doigt🎜🎜🎜Utilisez des annotations pour définir des sous-composants dans les composants métier🎜🎜rrreee🎜🎜Dans ngAfterViewInit() code> Une fois le hook exécuté, les sous-composants directs sont exploités🎜🎜🎜🎜Conclusion🎜🎜🎜Nous venons d'écrire ici sur l'utilisation des composants. Mes compétences en écriture sont limitées, alors allez~🎜.<p>Pour plus de connaissances sur la programmation, veuillez visiter : <a href="https://www.php.cn/course.html" target="_blank" textvalue="编程入门">Introduction à la programmation</a> ! ! </p>

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Vous avez un jeu croisé?
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment installer le composant DirectPlay de l'ancienne version de Windows 10 Comment installer le composant DirectPlay de l'ancienne version de Windows 10 Dec 28, 2023 pm 03:43 PM

De nombreux utilisateurs rencontrent toujours des problèmes lorsqu'ils jouent à certains jeux sur Win10, tels que le gel de l'écran et les écrans flous. À l'heure actuelle, nous pouvons résoudre le problème en activant la fonction de lecture directe, et la méthode de fonctionnement de la fonction est également très simple. Comment installer Directplay, l'ancien composant de Win10 1. Entrez "Panneau de configuration" dans la zone de recherche et ouvrez-le 2. Sélectionnez de grandes icônes comme méthode d'affichage 3. Recherchez "Programmes et fonctionnalités" 4. Cliquez sur la gauche pour activer ou désactiver les fonctions Win 5. Sélectionnez l'ancienne version ici Cochez simplement la case

Comment installer Angular sur Ubuntu 24.04 Comment installer Angular sur Ubuntu 24.04 Mar 23, 2024 pm 12:20 PM

Angular.js est une plateforme JavaScript librement accessible pour créer des applications dynamiques. Il vous permet d'exprimer rapidement et clairement divers aspects de votre application en étendant la syntaxe HTML en tant que langage de modèle. Angular.js fournit une gamme d'outils pour vous aider à écrire, mettre à jour et tester votre code. De plus, il offre de nombreuses fonctionnalités telles que le routage et la gestion des formulaires. Ce guide expliquera comment installer Angular sur Ubuntu24. Tout d’abord, vous devez installer Node.js. Node.js est un environnement d'exécution JavaScript basé sur le moteur ChromeV8 qui vous permet d'exécuter du code JavaScript côté serveur. Être à Ub

Un article explorant le rendu côté serveur (SSR) dans Angular Un article explorant le rendu côté serveur (SSR) dans Angular Dec 27, 2022 pm 07:24 PM

Connaissez-vous Angular Universel ? Cela peut aider le site Web à fournir un meilleur support SEO !

Comment utiliser PHP et Angular pour le développement front-end Comment utiliser PHP et Angular pour le développement front-end May 11, 2023 pm 04:04 PM

Avec le développement rapide d'Internet, la technologie de développement front-end s'améliore et se répète constamment. PHP et Angular sont deux technologies largement utilisées dans le développement front-end. PHP est un langage de script côté serveur capable de gérer des tâches telles que le traitement des formulaires, la génération de pages dynamiques et la gestion des autorisations d'accès. Angular est un framework JavaScript qui peut être utilisé pour développer des applications monopage et créer des applications Web composées de composants. Cet article explique comment utiliser PHP et Angular pour le développement front-end et comment les combiner.

Comment implémenter le composant de calendrier à l'aide de Vue ? Comment implémenter le composant de calendrier à l'aide de Vue ? Jun 25, 2023 pm 01:28 PM

Vue est un framework front-end très populaire. Il fournit de nombreux outils et fonctions, tels que la création de composants, la liaison de données, la gestion d'événements, etc., qui peuvent aider les développeurs à créer des applications Web efficaces, flexibles et faciles à entretenir. Dans cet article, je vais vous présenter comment implémenter un composant de calendrier à l'aide de Vue. 1. Analyse des exigences Tout d'abord, nous devons analyser les exigences de ce composant de calendrier. Un calendrier de base doit avoir les fonctions suivantes : afficher la page du calendrier du mois en cours ; prendre en charge le passage au mois précédent ou au mois suivant en cliquant sur un certain jour ;

Bases du développement VUE3 : utilisation d'extensions pour hériter des composants Bases du développement VUE3 : utilisation d'extensions pour hériter des composants Jun 16, 2023 am 08:58 AM

Vue est actuellement l'un des frameworks frontaux les plus populaires, et VUE3 est la dernière version du framework Vue. Par rapport à VUE2, VUE3 a des performances plus élevées et une meilleure expérience de développement, et est devenu le premier choix de nombreux développeurs. Dans VUE3, utiliser extends pour hériter de composants est une méthode de développement très pratique. Cet article explique comment utiliser extends pour hériter de composants. Qu'est-ce qui s'étend ? Dans Vue, extends est un attribut très pratique, qui peut être utilisé pour que les composants enfants héritent de leurs parents.

Composants angulaires et leurs propriétés d'affichage : comprendre les valeurs par défaut non bloquantes Composants angulaires et leurs propriétés d'affichage : comprendre les valeurs par défaut non bloquantes Mar 15, 2024 pm 04:51 PM

Le comportement d'affichage par défaut des composants du framework Angular ne concerne pas les éléments au niveau du bloc. Ce choix de conception favorise l'encapsulation des styles de composants et encourage les développeurs à définir consciemment la manière dont chaque composant est affiché. En définissant explicitement l'affichage des propriétés CSS, l'affichage des composants angulaires peut être entièrement contrôlé pour obtenir la mise en page et la réactivité souhaitées.

Comment ouvrir les paramètres de l'ancienne version des composants Win10 Comment ouvrir les paramètres de l'ancienne version des composants Win10 Dec 22, 2023 am 08:45 AM

Les composants de l'ancienne version de Win10 doivent être activés par les utilisateurs eux-mêmes dans les paramètres, car de nombreux composants sont généralement fermés par défaut. Nous devons d'abord entrer les paramètres. L'opération est très simple. Suivez simplement les étapes ci-dessous. composants de version ? Ouvrir 1. Cliquez sur Démarrer, puis cliquez sur « Système Win » 2. Cliquez pour accéder au Panneau de configuration 3. Cliquez ensuite sur le programme ci-dessous 4. Cliquez sur « Activer ou désactiver les fonctions Win » 5. Ici, vous pouvez choisir ce que vous voulez. ouvrir

See all articles