Il permet d’accéder à partir de la classe de composants à l’objet ElementRef pour le <p> qui a la variable de référence du modèle bio dans la vue du modèle du composant.
Il indique que le <p> doit être rendu en tant qu’enfant de la vue parent qui utilise ce composant.
Il fait le <p> dans le modèle prend en charge la projection de contenu.
Il fait le <p> visible dans le rendu final. Si le #bio a été utilisé dans le modèle et que le @ViewChild n’a pas été utilisé dans la classe, Angular masque automatiquement le <p> qui a #bio dessus.
Q3. Quelle est la différence entre le paramMap et l' queryParamMap sur l' ActivatedRoute classe?
Le paramMap est un littéral d’objet des paramètres dans le chemin d’URL d’un itinéraire. La requêteParamMap est un observable de ces mêmes paramètres.
Le paramMap est un Observable qui contient les valeurs de paramètre qui font partie du chemin d’URL d’un itinéraire. QueryParamMap est une méthode qui prend un tableau de clés et est utilisée pour trouver des paramètres spécifiques dans le paramMap.
paramMap est le nom hérité d’Angular 3. Le nouveau nom est queryParamMap.
Les deux sont des observables contenant des valeurs de la chaîne d’URL de l’itinéraire demandé. Le paramMap contient les valeurs de paramètre qui se trouvent dans le chemin d’accès à l’URL et le queryParamMap contient les paramètres de requête d’URL.
Q4. Sur la base de l’utilisation suivante du canal asynchrone et en supposant que le champ de classe utilisateurs est un Observable, combien d’abonnements aux utilisateurs Observable sont effectués ?
<h2>Names</h2><div *ngFor="let user of users | async">{{ user.name }}</div><h2>Ages</h2><div *ngFor="let user of users | async">{{ user.age }}</div><h2>Genders</h2><div *ngFor="let user of users | async">{{ user.gender }}</div>
Aucune. Le canal asynchrone ne s’abonne pas automatiquement.
Aucune. La syntaxe du modèle n’est pas correcte.
Trois. Il y en a un pour chaque canal asynchrone.
Un. Le canal asynchrone met en cache observables par type interne.
Q10. Avec la classe de composant suivante, quelle syntaxe de modèle utiliseriez-vous dans le modèle pour afficher la valeur du champ de classe de titre ?
Q11. Quel est le but de la méthode valueChanges sur un FormControl ?
Il est utilisé pour configurer les valeurs autorisées pour le contrôle.
Il est utilisé pour changer la valeur d’un contrôle en une nouvelle valeur. Vous appelez cette méthode et transmettez la nouvelle valeur pour le champ de formulaire. Il prend même en charge la transmission d’un tableau de valeurs qui peuvent être définies au fil du temps.
Il renvoie un booléen en fonction de si la valeur du contrôle est différente de la valeur avec laquelle il a été initialisé.
Il s’agit d’un observable qui émet chaque fois que la valeur du contrôle change, de sorte que vous pouvez réagir à de nouvelles valeurs et prendre des décisions logiques à ce moment-là.
Il fait le itemTotalChanged champ de classe public.
Il permet de lier des valeurs au itemTotalChanged champ de classe, comme ceci : <app-shopping-cart [itemTotalChanged]="newTotal"></app-shopping-cart>.
Il fournit un moyen de lier des événements au itemTotalChanged champ de classe, comme ceci : <app-shopping-cart (itemTotalChanged)="logNewTotal($event)"></app-shopping-cart>.
C’est simplement un moyen de mettre un commentaire devant un champ de classe pour la documentation.
Le ngIf est un raccourci pour l’autre exemple. Lorsque Angular traite cette directive, il écrit un élément div dans le DOM avec la propriété masquée.
Ils sont fondamentalement les mêmes.
Le ngIf ne restitue pas le div dans le DOM si l’expression est false. Le hidden l’utilisation de la propriété masque le contenu div dans la fenêtre d’affichage du navigateur, mais le div se trouve toujours dans le DOM.
Le ngIf est valide, mais l’utilisation de l' hidden la propriété est incorrecte et génère une erreur.
Q17. Sur la base du composant suivant, quelle syntaxe de modèle utiliseriez-vous pour lier le champ titleText de TitleCardComponent à la propriété title de l’élément h1 ?
Q18. Que sont les crochets de cycle de vie Angular ?
enregistreurs pour suivre la santé d’une application Angular
fournisseurs pouvant être utilisés pour suivre les instances des composants
tuyaux intégrés pouvant être utilisés dans les modèles pour les événements DOM
méthodes nommées réservées pour les composants et les directives qu’Angular appellera pendant les heures définies de son exécution, et peuvent être utilisées pour exploiter ces moments du cycle de vie
Q19. Choisissez la meilleure description pour ce code de syntaxe de modèle :
<span>Boss: {{job?.bossName}}</span>
Le ? est un raccourci pour le tuyau asynchrone. La valeur de la tâche doit être observable.
Il utilise l’opérateur de navigation sécurisée (?) sur le champ de travail. Si le champ de tâche n’est pas défini, l’accès au bossName sera ignoré et aucune erreur ne se produira.
Il y a une erreur dans la syntaxe du modèle. Le? n’est pas valide ici.
Il dijoue la valeur de l’emploi s’il en a un; sinon, il affiche le bossName.
Q20. Comment configurer une définition d’itinéraire pour un UserDetailComponent qui prend en charge le chemin d’URL user/23 (où 23 représente l’ID de l’utilisateur demandé) ?
Ils définissent le champ CalloutDirective.fontWeight selon que la souris est ou non sur l’élément DOM. HostListener définit ensuite la propriété CSS font-weight sur la valeur fontWeight.
Ils configurent la directive pour vérifier l’élément DOM sur lequel elle se trouve. Si des liaisons d’événements ont été ajoutées pour la souris, entrez et laissez, elle utilisera ce code. Sinon, rien ne se passera.
Il s’agit d’une utilisation incorrecte de HostListener et HostBinding. Les décorateurs HostListener et HostBinding ne font rien sur les directives; ils ne fonctionnent que lorsqu’ils sont utilisés sur des composants.
Si l’élément DOM sur lequel cette directive est placée a la propriété CSS font-weight définie dessus, les événements mouseentent et mouseleave seront déclenchés.
Q22. Quelle syntaxe de modèle angulaire pouvez-vous utiliser sur ce champ de formulaire piloté par modèle pour accéder à la valeur du champ et vérifier la validation dans le balisage du modèle ?
Ils sont les mêmes. Les deux entraîneront une nouvelle instance de Logger liée au jeton FormattedLogger.
La syntaxe useClass indique à l’injecteur de créer une nouvelle instance de Logger et de lier cette instance au jeton FormattedLogger. La syntaxe useExisting fait référence à une instance d’objet déjà existante déclarée comme Logger.
Les deux ont tort. Un type fort ne doit pas être utilisé pour useClass ou useExisting.
Ils sont les mêmes. Les deux entraîneront le jeton FormattedLogger comme alias pour l’instance de Logger.
Le <div> agit comme un espace réservé. Si le champ de classe de produit est « truthy », le <div> sera remplacé par le seul product.name valeur; sinon, rien ne sera rendu.
Le <div> sera toujours rendu, et si le champ de produit est « véridique », le <div> contiendra le product.name valeur; sinon, il rendra le <div> élément sans valeur.
Cela produit une erreur, puisque ngIf n’est pas une directive structurelle intégrée.
Si le champ de classe de produit est « truthy », le DOM rendu inclura le <div> avec la valeur de l' product.name champ. S’il n’est pas « véridique », le DOM rendu ne contiendra pas le <div> élément.
Il fournit un moyen de coder la structure de document d’une application Angular. Le @NgModule est une forme de commentaire de code en ligne qui est ignoré par le compilateur TypeScript, mais qui apparaîtra avec une mise en forme spéciale dans les applications d’éditeur de code.
Il déclare un module Angular nommé AppModule et le rend disponible pour un chargement paresseux dans toute l’application.
Il déclare un module Angular nommé AppModule qui contient un composant amorçage nommé AppComponent. Ensuite, il enregistre ce module avec Angular, afin que l’application puisse démarrer.
Avant de charger le UserComponent, le routeur s’abonnera au Observable retourné par un résoudre dans le UserResolverService. Cette technique peut être utilisée pour obtenir des données préchargées pour un route.
Après le route est terminé la résolution, et le composant est chargé et rendu, le UserResolverService aura une méthode nommée utilisateur exécuter qui nettoiera toutes les connexions de données ouvertes.
Il y a une erreur. Le nom de propriété correct est onResolve.
Le UserComponent aura un paramètre dans son constructeur pour utilisateur, et l' routeur gérera l’injection d’une valeur pour cela d’un appel à un utilisateur dans le UserResolverService.
Le cas échéant OngletsComposant des éléments sont ajoutés à la TabsListComponent modèle, ils seront mis dans le <ng-content> au moment de l’exécution.
Il crée TabComponent composants de l' TabsListComponent modèle lorsqu’un TabsListComponent est instancié.
Il permet d’accéder à partir de la classe de composants à n’importe quel TabComponent les composants dont le contenu était projeté dans le <ng-content> pour ce composant.
Il restreint les éléments autorisés qui peuvent être placés dans un TabsListComponent élément à autoriser uniquement TabComponent Éléments.
Q33. Lorsqu’un service est fourni pour root et est également ajouté à la configuration du fournisseur pour un module chargé paresseusement, quelle instance de ce service l’injecteur fournit-il aux constructeurs dans le module chargé paresseusement ?
Une nouvelle instance de ce service est créée lorsque le module est chargé paresseusement.
La fourniture d’un service du même type au niveau d’un module chargé paresseusement n’est pas autorisée.
Si une instance du service n’a pas encore été créée au niveau racine. il en créera un et l’utilisera ensuite.
Une seule instance de ce service est toujours instanciée à la racine et est la seule jamais utilisée, y compris dans les modules paresseux.
Q34. Que fait le décorateur HostBinding dans cette directive ?
Il ajoute la classe CSS nommée en surbrillance à tout élément DOM sur lequel se trouve la directive appHighlight.
HostBinding ne fait rien sur les directives, seulement sur les composants.
Il spécifie si l’élément hôte obtient la classe en surbrillance ajoutée à son attribut class, alors le champ de classe de directive en surbrillance sera défini sur true ; et s’il n’est pas ajouté sur l’hôte, il sera défini sur false.
Il crée un style en ligne sur l’élément hôte avec une propriété CSS nommée highlight définie sur true.
Q35. Dans les formulaires réactifs, quel type de classe de formulaire Angular est utilisé sur le DOM natif <form> élément pour le câbler?
FormArray
FormControl
FormGroup
all of these answers
Q36. En supposant que le nom d’utilisateur FormControl a été configuré avec un validateur minLength, comment configurer un affichage d’erreur dans le balisage de formulaire réactif suivant pour le champ de nom d’utilisateur ?
<input type="text"formControlName="username" #userName="ngModer">
<span *ngIf="userName.errors.minlength"›
Username must be at least {{ userName.errors.minlength.requiredLength }} characters.
</span>
La méthode de canal RxJs est un alias pour la méthode subscribe, donc un appel à getSettings exécutera la requête get. L’opérateur de nouvelle tentative est utilisé pour indiquer à l’appel de tuyau de réessayer la requête get trois fois.
Il produira une erreur au moment de l’exécution car la méthode pipe n’est pas disponible hors du Httpclient.get appeler.
Chaque appel à la méthode getSettings entraînera le Httpclient à effectuer trois demandes get totales à settingsUrl, ce qui n’est pas idéal car il y aura toujours deux appels supplémentaires qui ne sont pas nécessaires. L’opérateur de nouvelle tentative ne doit pas être utilisé de cette manière.
Lorsque le résultat de la méthode getSettings est abonné, l’appel HTTP GET est effectué ; s’il échoue, il sera réessayé jusqu’à trois fois avant d’abandonner et de renvoyer une erreur.
Q43. Lorsqu’un service nécessite une configuration pour initialiser son état par défaut via une méthode, comment pouvez-vous vous assurer que cette méthode est appelée avant que le service ne soit injecté n’importe où ?
Placez plutôt la logique de cette méthode de service dans le constructeur de service.
Utilisez un fournisseur d’usine au niveau AppModule racine qui dépend du service pour appeler cette méthode de service.
il n’est pas possible de le faire au début de l’application; vous ne pouvez le faire qu’au niveau d’un composant.
Instanciez une instance du service au niveau global (étendue de la fenêtre), puis appelez cette méthode.
Q44. Quelle déclaration décrit le mieux cette utilisation du banc d’essai ?
Le banc d’essai est requis chaque fois que vous souhaitez utiliser un objet espion dans un test unitaire pour un fournisseur Angular.
Le banc d’essai est utilisé pour tester la vue d’un composant.
Le banc d’essai échafaude un NgModule avec deux fournisseurs et gère toute injection de dépendance. Si une classe Angular demande le DataService dans son constructeur, le TestBed injectera spy dans ce constructeur.
Le banc d’essai configure le testeur pour lui dire d’exécuter uniquement des tests pour les deux fournisseurs répertoriés dans son tableau de fournisseurs.
All other tests be ignored, including tests that assert results against one of these providers and a non-defined provider.Although it will work when multiple providers in this configuration are asserted against in a single test.
Q45. Quelle est la principale différence entre un composant et une directive?
Un composant utilise une propriété de métadonnées de sélecteur et une directive n’en utilise pas.
Une directive peut être utilisée pour ajouter des événements personnalisés au DOM et un composant ne le peut pas.
Un composant a un modèle et une directive n’en a pas.
Une directive ne peut cibler que des éléments DOM natifs.
Q46. Que pourriez-vous ajouter à cette classe de directive pour permettre de définir la longueur tronquée lors de l’utilisation de la directive dans le balisage ?
@Directive({
selector: '[appTruncate]'
})
export class TruncateDirective {
. . .
}
// example of desired usage: <p [appTruncate]="10">Some very long text here</p>
@Input() appTruncate: number;
@Output() appTruncate;
constructor(maxLength: number) { }
Nothing. The directive selector cannot be used to pass in values to the directive.
Q48. En supposant que le DataService a été enregistré dans les fournisseurs de l’application, quelle réponse décrit le mieux ce qui se passe en fonction du constructeur de ce composant ?
Il déclare que le OrderHistoryComponent aura sa propre version d’un DataService et qu’il ne devrait jamais utiliser d’instances existantes. Le DataService devrait être instancié dans la classe en tant que champ privé pour que ce code soit complet et fonctionne.
Lorsque Angular crée une nouvelle instance du OrderHistoryComponent, l’injecteur fournira une instance d’un DataService au premier argument du constructeur de composants. Le constructeur dataService sera utilisé pour définir un champ d’instance privée portant le même nom sur l’instance.
Il fournit un moyen de faire des tests de composants uniquement; le constructeur n’a aucune utilisation dans l’exécution réelle de l’application Angular.
Il permet à l’élément personnalisé ciblé par le composant d’avoir une propriété personnalisée nommée dataService qui peut être utilisé pour lier un existant DataService instance à.
Le FormControl pour username est configuré pour exclure trois validateurs des validateurs qu’il est autorisé à utiliser.
Le FormControl pour username est en cours de configuration pour permettre l’utilisation de trois validateurs possibles : required, maxLength, et un personnalisé nommé unique. Pour les activer validators, une directive de validateur devrait être placée sur les champs de formulaire dans le balisage.
La validation ne peut pas être configurée de cette manière dans les formulaires réactifs.
Le FormControl pour username est configuré avec trois validateurs : le required et minLength les validateurs provenant d’Angular et une fonction de validateur personnalisée nommée unique qui vérifie la valeur non égale à la chaîne admin.
Il enregistre un fournisseur pour le service qui n’est disponible qu’au niveau du module racine, pas pour les modules enfants.
Il enregistre un fournisseur pour le service dans l’injecteur d’application racine, ce qui rend une seule instance de celui-ci disponible dans toute l’application.
Cela permet de faire en sorte que le service ne puisse être injecté que dans le composant amorçage de l’application.
Il configure une règle de temps de compilation qui vous permet de placer le type de service uniquement dans la propriété de métadonnées providers du NgModule racine.
L’InjectionToken ajoute une instance des AppSettings au fournisseur racine via l’appel du constructeur InjectionToken, ce qui la rend automatiquement disponible pour tous les NgModules, services et composants de l’application Angular sans qu’il soit nécessaire de l’injecter n’importe où.
L’InjectionToken est utilisé pour créer un jeton de fournisseur pour une dépendance non-classe. Un littéral d’objet peut être fournisseur en tant que valeur pour le type de fournisseur de dépendance APP_SETTINGS qui peut ensuite être injecté dans des composants, des services, etc.
L’InjectionToken est utilisé pour créer un décorateur dynamique pour les AppSettings qui peut être utilisé sur les paramètres du constructeur via un décorateur @AppSettings.
Ce code a une erreur car vous ne pouvez pas utiliser une interface TypeScript pour le type générique sur l’InjectionToken
Q54. Pour l’exemple de formulaires pilotés par modèle suivant, quel argument peut être transmis à la méthode submit dans l’événement click pour envoyer les données du formulaire ?
Il permet de marquer des itinéraires individuels pour le préchargement.
Il précharge toutes les dépendances pour les itinéraires, créant des instances de services au démarrage de l’application pour la première fois
Il garantit que tous les modules sont intégrés dans un seul fichier de bundle de modules d’application.
Il configure le routeur pour charger immédiatement tous les itinéraires qui ont une propriété loadChildren (itinéraires qui sont généralement chargés sur demande)
Q56. Quelle est une autre façon d’écrire ce balisage pour lier la valeur du champ de classe userName à l h1 propriété de titre d’élément?
<h1 [title]="userName">Current user is {{ userName }}</h1>
title="nom_utilisateur »
title="{{ nom_utilisateur }} »
title="{{ 'nom_utilisateur' }} »
La seule façon de le faire est d’utiliser les crochets.
Q57. Qu’est-ce que le async pipe doing dans cet exemple ?
html <p data-directive="appTruncate">Some long text </p>
html <p appTruncate>Some long text</p>
html <p app-truncate>Some long text</p>
html <app-truncate>Some long text</app-truncate>
Q59. Quel hook de cycle de vie peut être utilisé sur un composant pour surveiller toutes les modifications apportées aux valeurs de @Input sur ce composant ?
Q61. Quelle commande Angular CLI exécuteriez-vous pour générer un UsersComponent et l’ajouter au SharedModule (dans le fichier shared.module.ts de votre application) ?
ng générer le composant --newModule=shared
ng générer des utilisateurs de composants --module=shared
ng générer des utilisateurs de composants --shared
ng générer le composant --add=shared
[revérifiez les réponses]
Q62. Comment réécrire ce balisage pour que le conteneur div ne soit pas nécessaire dans le rendu DOM final
Ce code est une erreur car vous ne pouvez pas utiliser une interface TypeScript pour le type générique sur InjectionToken.
L’InjectionToken est utilisé pour créer un jeton de fournisseur pour une dépendance non-classe. Un lieteral d’objet peut être fourni comme valeur pour le type de fournisseur de dépendance APP_SETTINGS qui peut ensuite être injecté dans des composants, des services, etc.
L’InjectionToken ajoute une instance des AppSettings au fournisseur roote via l’appel du constructeur InjectionToken, ce qui la rend automatiquement disponible pour tous les NgModules, services et composants via l’application Angular sans qu’il soit nécessaire de l’injecter n’importe où.
L’InjectionToken est utilisé pour créer un décorateur dynamique pour les AppSettings qui peut être sed sur les paramètres du constructeur via un décorateur @AppSettings.
[revérifier les réponses]
Q64. Quels utilitaires Angular, le cas échéant, sont nécessaires pour tester un service sans dépendances de constructeur ?
Par.css() la méthode d’assistance est nécessaire
Un élément de texte est nécessaire pour exécuter le service pour le test unitaire.
Aucune. Un service peut être instancié et testé à l’unité par lui-même.
La classe TestBed est nécessaire pour instancier le service.
Q65. Quelle est la différence entre les protecteurs d’itinéraire CanActivate et CanLoad?
CanActivate est utilisé pour vérifier l’accès. CanLoad est utilisé pour précharger les données de l’itinéraire.
CanLoad est utilisé au démarrage de l’application pour autoriser ou refuser l’ajout d’itinéraires à la table de routage. CanActivate est utilisé pour gérer l’accès aux itinéraires au moment où ils sont demandés.
CanActivate et CanLoad font exactement la même chose.
CanLoad empêche la livraison et le chargement d’un NgModule entier. CanActivate arrête le routage vers un composant de ce NgModule, mais ce module est toujours chargé.
CanActivate vs Canload CanActivate empêche l’accès sur les itinéraires, CanLoad empêche le chargement paresseux.
Q66. À quoi sert la propriété outlet dans cet objet de définition de routeur ?
il localisera toutes les instances de <document-box> dans le DOM et y insérer un élément DocumentComponent lors de la navigation d’itinéraire.
Il déclare que le DocumentComponent peut être utilisé comme enfant à un <<document-box> en plus d’être acheminé vers.
Nous avions l’habitude de cibler un <router-outlet> avec l’attribut name correspondant à la valeur de chaîne comme emplacement du DocumentComponent à restituer lorsqu’il est routé.
C’est une source d’alimentation pour le routeur. (certainement pas la réponse :P)