Académique Documents
Professionnel Documents
Culture Documents
Campagne : Angular 2+, AngularJS - Junior Domaine(s) : Angular 2+, AngularJS Langage : Français Date : 23/04/2023
MEILLEUR QUE
<1%
DURÉE 0h06 / 3h47
Fiabilité 0 / 115pts
1 / 111
Question 1: Mise à jour du modèle retardée
AngularJS 00:05 / 01:00 0 / 40 pts
Question
Quel attribut devrait être ajouté à un élément associé à la directive ng-model pour passer le délai de
mise à jour et validation à une seconde ?
Réponse
ng-model-options="{debounce: 1}"
ng-model-options="{delay: 1}"
ng-model-options="{delay: 1000}"
ng-model-options="{debounce: 1000}"
Résultat
Réponse incorrecte
Connaissance du langage +40pts
2 / 111
Question 2: Directive ou controller
AngularJS 00:03 / 02:00 40 / 40 pts
3 / 111
Question
Les deux codes ci-dessous donnent le même résultat. Lequel est préférable ?
Code 1
Code 2
4 / 111
Réponse
Code 1
Code 2
Résultat
Réponse correcte
Connaissance du langage +40pts
Question
Parmi ces propositions, quelles sont celles qui désignent des directives du framework AngularJS ?
Réponse
ng-app
ng-model
ng-state
ng-bind
Résultat
Réponse partiellement correcte
Connaissance du langage +13/40pts
5 / 111
Question 4: Scope bidirectionnel
AngularJS 00:03 / 00:40 40 / 40 pts
Question
Quelle valeur de propriété d'un scope isolé permet de créer une association bidirectionnelle entre le
scope local de la directive et son scope parent ?
Réponse
<
&
Résultat
Réponse correcte
Connaissance du langage +40pts
6 / 111
Question 5: Requêtes $http correctes
AngularJS 00:03 / 00:45 0 / 40 pts
Question
Sélectionnez les requêtes $http valides parmi les propositions ci-contre.
Réponse
$http.data('GET').then(successCallback, errorCallback);
Résultat
Réponse incorrecte
Connaissance du langage +40pts
7 / 111
Question 6: ngModel à chaque frappe de clavier
AngularJS 00:04 / 01:00 0 / 40 pts
Question
Par défaut, à quel moment la donnée du modèle associée à un champ <input ng-model="..."> est-
elle modifiée ?
Réponse
Résultat
Réponse incorrecte
Connaissance du langage +40pts
8 / 111
Question 7: Scope isolé pour directive
AngularJS 00:04 / 01:00 0 / 40 pts
Question
Parmi les propositions ci-contre, quelle est celle qui permet de créer un scope isolé pour une directive ?
Réponse
scope: true
scope: isolate
scope: {}
scope: 0
Résultat
Réponse incorrecte
Connaissance du langage +40pts
9 / 111
Question 8: Application de directives
AngularJS 00:04 / 01:00 0 / 40 pts
Question
Dans quels cas peut-on dire que la directive ngModel s'applique à l'élément <input> ?
Réponse
<input ng-model="name"/>
<input ngmodel="name"/>
<input data-ng-model="name"/>
<input ngModel="name"/>
Résultat
Réponse incorrecte
Connaissance du langage +40pts
10 / 111
Question 9: Services internes AngularJS
AngularJS 00:04 / 00:30 0 / 40 pts
Question
Parmi les propositions suivantes, l'une d'elle n'est pas un service interne d'AngularJS. Laquelle ?
Réponse
$http
$view
$log
$cookies
Résultat
Réponse incorrecte
Connaissance du langage +40pts
11 / 111
Question 10: Service $q
AngularJS 00:04 / 01:30 0 / 40 pts
Question
Le script ci-dessous affiche l'erreur “$q is not defined” à l'exécution.
Réponse
Injecter le service $q
12 / 111
Résultat
Réponse incorrecte
Connaissance du langage +40pts
Question
$rootScope est attaché à :
Réponse
L'élément <html>
L'élément <body>
Résultat
Réponse incorrecte
Connaissance du langage +20pts
13 / 111
Question 12: Expression valide
AngularJS 00:04 / 00:30 0 / 20 pts
Question
Parmi les propositions suivantes, l'une d'elle représente une expression AngularJS valide. Laquelle ?
Réponse
{{ 2 + 2 }}
{2 + 2}
[[ 2 + 2 ]]
(2 + 2)
Résultat
Réponse incorrecte
Connaissance du langage +20pts
14 / 111
Question 13: Service d'appel asynchrone
AngularJS 00:04 / 00:30 0 / 60 pts
Question
Quel service AngularJS utiliseriez-vous si vous souhaitez exécuter une fonction de manière asynchrone ?
Réponse
$async
$q
$promise
$wait
Résultat
Réponse incorrecte
Connaissance du langage +60pts
15 / 111
Question 14: Classes ngModel valides
AngularJS 00:04 / 00:40 0 / 60 pts
Question
Parmi ces propositions laquelle n'est pas une classe css ajoutée/enlevée en fonction de la validité de
ngModel ?
Réponse
ng-reset
ng-valid
ng-invalid
ng-pending
Résultat
Réponse incorrecte
Connaissance du langage +60pts
16 / 111
Question 15: Supprimer du contenu HTML avec ng-if
AngularJS 00:04 / 00:40 0 / 60 pts
Question
Quelle directive AngularJS est utilisée pour enlever complétement un élément du DOM de manière
conditionnelle ?
Réponse
Résultat
Réponse incorrecte
Connaissance du langage +60pts
Réponse(s) correcte(s)
ng-if
ngIf
(?).*ng-if.*
17 / 111
Question 16: ngRequired
AngularJS 00:04 / 00:45 0 / 60 pts
Question
Qu'est-ce qui est vrai à propos de la directive ngRequired ?
Réponse
Elle fonctionne sur les champs <input> et <select> et ne peut pas être
appliquée sur un champ personnalisé
Résultat
Réponse incorrecte
Connaissance du langage +60pts
18 / 111
Question 17: Les services AngularJS
AngularJS 00:04 / 00:45 0 / 60 pts
Question
Les services AngularJS sont:
Réponse
Des singletons
Résultat
Réponse incorrecte
Connaissance du langage +60pts
19 / 111
Question 18: Scope d'un "component"
AngularJS 00:04 / 00:45 0 / 60 pts
Question
Qu'est-ce qui est vrai à propos du scope d'un component AngularJS ?
Réponse
Le scope d'un component AngularJS est toujours hérité du scope parent par
défaut
Comme pour une directive AngularJS, les associations de scope sont définis
par la propriété scope du component AngularJS
Résultat
Réponse incorrecte
Connaissance du langage +60pts
20 / 111
Question 19: ngModelController
AngularJS 00:03 / 00:45 0 / 60 pts
Question
Quelle propriété de ngModelController devrait être utilisée pour exécuter du code personnalisé à
chaque fois que le ngModel associé est modifié programmatiquement ?
Réponse
$formatters
$parsers
$validators
Résultat
Réponse incorrecte
Connaissance du langage +60pts
21 / 111
Question 20: Élements correspondants aux directives
AngularJS 00:03 / 00:45 0 / 60 pts
Question
Sur quels items HTML les directives AngularJS peuvent-elles être appliquées ?
Réponse
Résultat
Réponse incorrecte
Connaissance du langage +60pts
22 / 111
Question 21: Transclude
AngularJS 00:03 / 00:50 0 / 60 pts
Question
Comment déclare-t-on un contenu par défaut pour une directive ngTransclude si aucun contenu n'est
fourni à l'utilisation de la directive ?
Réponse
<ng-transclude="fallback content"/>
Résultat
Réponse incorrecte
Connaissance du langage +60pts
23 / 111
Question 22: Création d'un scope isolé
AngularJS 00:03 / 00:45 0 / 60 pts
Question
Quelle est la manière correcte de créer un nouveau scope isolé ?
Réponse
parentScope.$new()
parentScope.$new(true)
parentScope.$new(false, differentParentScope)
parentScope.$new(false, {isolated:true})
Résultat
Réponse incorrecte
Connaissance du langage +60pts
24 / 111
Question 23: ngNonBindable
AngularJS 00:03 / 00:45 0 / 60 pts
Question
Quelle directive permet d'indiquer au compilateur AngularJS de ne pas compiler ou "binder" le contenu
de l'élément courant ?
Réponse
ngNoCompile
ngNoBind
ngNonBindable
ngNonCompilable
Résultat
Réponse incorrecte
Connaissance du langage +60pts
25 / 111
Question 24: Filtres AngularJS
AngularJS 00:03 / 00:45 0 / 60 pts
Question
Qu'est-ce qui est vrai à propos des filtres AngularJS ?
Réponse
Les filtres sont utilisés pour formatter des données présentées à l'utilisateur
et permettent également de mettre à jour ces données
Ils peuvent être utilisés dans des templates de la vue, des controlleurs et
des services
Vous pouvez écrire des filtres personalisés en plus des filtres fournis par le
framework AngularJS
Résultat
Réponse incorrecte
Connaissance du langage +60pts
26 / 111
Question 25: Propagation d'événements
AngularJS 00:04 / 01:00 0 / 60 pts
Question
Quelle méthodes de $scope permet de propager un événement à tous les scopes fils et leurs enfants ?
Réponse
Résultat
Réponse incorrecte
Connaissance du langage +60pts
Réponse(s) correcte(s)
$broadcast
$broadcast()
(?).*$broadcast.*
27 / 111
Question 26: Service $location
AngularJS 00:04 / 01:00 0 / 60 pts
Question
Que fait le service $location ?
Réponse
Il corrige automatiquement l'URL si une URL invalide est saisie par l'utilisateur
Résultat
Réponse incorrecte
Connaissance du langage +60pts
28 / 111
Question 27: Raison d'être de $scope
AngularJS 00:05 / 01:00 0 / 60 pts
Question
Qu'est-ce qui est vrai à propos de $scope en AngularJS ?
Réponse
Une application n'a qu'un $scope partagé par tous les composants
Résultat
Réponse incorrecte
Connaissance du langage +60pts
29 / 111
Question 28: Expression "track by"
AngularJS 00:10 / 01:00 0 / 60 pts
Question
Quest-ce qui est vrai à propos de l'expression track by de la directive ng-repeat ?
Réponse
Si vous avez des éléments en double dans un tableau, vous devez utiliser
votre propre expression track by
Résultat
Réponse incorrecte
Connaissance du langage +60pts
30 / 111
Question 29: $asyncValidators
AngularJS 00:04 / 01:00 0 / 60 pts
Question
Quelle classe la directive ngModel ajoute-t-elle tant que l'un de ses $asyncValidators n'a pas été
résolu ou rejeté.
Réponse
ng-dirty
ng-untouched
ng-invalid
ng-pending
Résultat
Réponse incorrecte
Connaissance du langage +60pts
31 / 111
Question 30: Compilation
AngularJS 00:17 / 01:00 0 / 60 pts
Question
Qu'est-ce qui est vrai à propos du process de compilation AngularJS ?
Réponse
Résultat
Réponse incorrecte
Connaissance du langage +60pts
32 / 111
Question 31: Scope de directive
AngularJS 00:05 / 01:15 0 / 60 pts
Question
Pour qu'une directive puisse accéder à une donnée du scope de son parent, la valeur de son scope peut
être :
Réponse
scope:true
scope:false
scope:{}
Résultat
Réponse incorrecte
Connaissance du langage +60pts
33 / 111
Question 32: ngShow dirty
AngularJS 00:06 / 01:30 0 / 60 pts
Question
Quelle devrait être la valeur de l'attribut ng-show à la ligne 4 si l'on souhaite afficher le bouton "Save"
quand le champ <input> "Message" est dans l'état "dirty" (non-sauvegardé).
Réponse
Résultat
Réponse incorrecte
Connaissance du langage +60pts
Réponse(s) correcte(s)
form.msg.$dirty
(?i).*form.msg.$dirty.*
34 / 111
Question 33: $watch
AngularJS 00:03 / 01:45 0 / 60 pts
Question
Vis-à-vis du code ci-dessous, sélectionnez le code qui permet de réagir aux changements des deux
propriétés ( currency et value ) de l'objet amount .
Réponse
$scope.$watch('amount', myListener)
$scope.$watch('amount.*', myListener)
Résultat
Réponse incorrecte
Connaissance du langage +60pts
35 / 111
Question 34: Scope binding &
AngularJS 00:09 / 02:00 0 / 60 pts
Question
Quelle valeur de "scope binding" devrait remplacer "..." à la ligne 15 pour que la fonction getName() du
scope parent soit correctemment appelée depuis le template de la directive ?
Réponse
Résultat
Réponse incorrecte
Connaissance du langage +60pts
36 / 111
Réponse(s) correcte(s)
&
&?
'&'
'&?'
&name
'&name"
Question
Le code ci-dessous affiche “SUCCESS: Saved data on file” sur la page.
Remplacez le code à la ligne 17 afin que “FAIL: Invalid Data” soit affiché sur la page.
37 / 111
Réponse
Résultat
Réponse incorrecte
Connaissance du langage +60pts
Réponse(s) correcte(s)
deferred.reject('Invalid Data')
deferred.reject("Invalid Data")
deferred.reject('Invalid Data');
deferred.reject("Invalid Data");
38 / 111
Question 36: Scope digest
AngularJS 00:03 / 02:00 0 / 60 pts
Question
Ajouter la ligne de code manquante ligne 11 afin qu'après un délai de 2 secondes, “Second message” soit
affiché sur la page.
Réponse
Résultat
Réponse incorrecte
Connaissance du langage +60pts
Réponse(s) correcte(s)
$scope.$apply();
$scope.$apply()
$scope.$digest();
$scope.$digest()
39 / 111
Question 37: Variables internes ng-repeat
AngularJS 00:03 / 02:00 0 / 60 pts
Question
Quelles valeurs sont affichées sur la page à l'exécution du code ci-dessous ?
Réponse
90, Graduate
realAge, qualification
40 / 111
Résultat
Réponse incorrecte
Connaissance du langage +60pts
Question
Quest-ce qui est vrai à propos du code ci-dessous ?
41 / 111
Réponse
Résultat
Réponse incorrecte
Connaissance du langage +60pts
42 / 111
Question 39: Modules AngularJS de base
AngularJS 00:03 / 00:35 0 / 60 pts
Question
Parmi les propositions ci-contre, quelles sont celles qui désignent des modules AngularJS valides ?
Réponse
ngLocation
ngAria
ngScope
ngMock
Résultat
Réponse incorrecte
Connaissance du langage +60pts
43 / 111
Question 40: Mise à jour du ngModel
AngularJS 00:03 / 02:00 0 / 40 pts
Question
Vis-à-vis du code ci-dessous, sélectionnez le code à ajouter à l'élement <input> afin que le ngModel
soit mis à jour après la perte de focus du champ et non pas à chaque frappe de clavier ?
Réponse
ng-model-options="{updateOn:'blur'}"
ng-model-options="{updateOn:'focusout'}"
ng-model-update="{on:'blur'}"
ng-model-update=”{on:'focusout')”
44 / 111
Résultat
Réponse incorrecte
Connaissance du langage +40pts
Question
Quelle fonction doit être appelée pour lancer une application AngularJS manuellement ?
Réponse
angular.start
angular.init
angular.bootstrap
angular.load
Résultat
Réponse incorrecte
Connaissance du langage +40pts
45 / 111
Question 42: setInterval wrapper
AngularJS 00:03 / 00:45 0 / 40 pts
Question
Quel est le remplacement AngularJS de la fonction window.setInterval ?
Réponse
Résultat
Réponse incorrecte
Connaissance du langage +40pts
Réponse(s) correcte(s)
$interval
(?i).*$interval.*
46 / 111
Question 43: Filtre currency
AngularJS 00:03 / 00:45 0 / 40 pts
Question
Par quelle façon peut-on afficher un montant exprimé dans la monnaie locale?
Réponse
{{currency: 100}}
{{100 | locale}}
{{100 | currency}}
{{100 | lang}}
Résultat
Réponse incorrecte
Connaissance du langage +40pts
47 / 111
Question 44: Restreindre une directive
AngularJS 00:03 / 00:40 0 / 40 pts
Question
Parmi les propositions ci-contre, quel valeur de l'option restrict permet de restreintre l'usage d'une
directive au niveau d'une classe, d'un élément ou d'un attribut ?
Réponse
ACE
ACB
ADC
BAC
Résultat
Réponse incorrecte
Connaissance du langage +40pts
48 / 111
Question 45: Lazy loading avec loadChildren
Angular 2+ 00:03 / 01:00 0 / 60 pts
Question
Ligne 13 du code ci-dessous, par quoi doit-on remplacer ???? pour que le module users soit chargé à
la volée (lazy loading) ?
Réponse
Résultat
Réponse incorrecte
Connaissance du langage +60pts
Réponse(s) correcte(s)
loadChildren
49 / 111
Question 46: Syntaxe de propriété de sortie
Angular 2+ 00:03 / 01:15 0 / 60 pts
Question
On considère le composant <app-user> qui a une propriété de sortie appelée updated .
Ligne 7, par quoi doit-on remplacer ???? pour obtenir la donnée à jour de la propriété updated ?
Réponse
Résultat
Réponse incorrecte
Connaissance du langage +60pts
50 / 111
Réponse(s) correcte(s)
(updated)
( updated )
51 / 111
Question 47: Directive ngStyle
Angular 2+ 00:03 / 01:00 0 / 60 pts
Question
Quelle directive Angular built-in peut-on utiliser pour remplacer ???? à la ligne n°6 pour appliquer les
styles ?
Réponse
Résultat
Réponse incorrecte
Connaissance du langage +60pts
Réponse(s) correcte(s)
[ngStyle]
[ ngStyle ]
52 / 111
Question 48: Angular SEO
Angular 2+ 00:03 / 00:45 0 / 60 pts
Question
Comment peut-on rendre un app Angular plus SEO friendly ?
Réponse
Résultat
Réponse incorrecte
Connaissance du langage +60pts
53 / 111
Question 49: ng eject
Angular 2+ 00:03 / 00:40 0 / 60 pts
Question
Quelle commande permet de découpler son application Angular de la CLI Angular, par exemple pour
vous permettre de configurer webpack manuellement ?
Réponse
ng eject
ng remove
ng delete
ng exit
ng webpack
ng decouple
Résultat
Réponse incorrecte
Connaissance du langage +60pts
54 / 111
Question 50: Détection de modifications d'un composant
Angular 2+ 00:03 / 00:30 0 / 60 pts
Question
Quelle est la stratégie de détection de modifications par défaut pour un composant ?
Réponse
ChangeDetection
OnPush
Default
Résultat
Réponse incorrecte
Connaissance du langage +60pts
55 / 111
Question 51: Affichage d'une liste (@Input, ngIf, ngFor)
Angular 2+ 00:08 / 25:00 20 / 150 pts
Question
On vous demande de créer un composant Angular nommé TestComponent avec test-component
pour sélecteur.
Le composant doit déclarer un input de type Array<string> nommé inputData .
S'il n'y a pas de donnée en entrée ( inputData vide ou manquant) , vous devez écrire "No data" dans un
div avec id="noData" . Si le tableau inputData n'est pas vide, le div ne doit pas être présent dans le
DOM de la page.
Si le tableau contient au moins un élément, vous devez écrire les chaines de caractères de ce tableau
dans des divs séparés. Ces divs doivent être les fils d'un div avec id="dataList" . Si la longueur d'une
chaine est impaire, alors le texte doit être écrit en rouge red , sinon en vert green .
Une prévisulisation est mise à votre disposition, son rendu HTML devrait être le suivant :
<test-component>
<div id="noData">No data</div>
<div id="dataList"></div>
</test-component>
<test-component>
<div id="dataList">
<div style="color: red;">Odd</div>
<div style="color: green;">Even</div>
</div>
</test-component>
Notes : Un bloc de "Preview" est disponible pour vous permettre de débugguer votre code. Il affiche
votre composant ci-dessous. Vous pouvez l'ouvrir et le modifier à votre guise. Ce bloc de "Preview" n'est
pas pris en compte dans le calcul du score de votre code.
56 / 111
Réponse
57 / 111
Résultat
Compile
Connaissance du langage +0pts
Green
Connaissance du langage +20pts
Red
Connaissance du langage +20pts
Liste longue
Connaissance du langage +50pts
Question
État initial :
Dans PreviewComponent vous pouvez voir deux liens. Quand Menu1 est cliqué, Menu1Component
est chargé, quand Menu2 est cliqué, Menu2Component est chargé. Dans les deux cas <footer-
component> reste vide.
À faire :
Vous devez modifier le code pour charger FooterAComponent dans <footer-component> quand
Menu1Component est chargé. Idem avec FooterBComponent quand Menu2Component est chargé.
Vous pouvez modifier les classes et variables suivantes :
appRoutes FooterWrapperComponent Menu1Component Menu2Component
Si vous modifiez autre chose, les tests de validation échoueront.
Notes : Un bloc de "Preview" est disponible pour vous permettre de débugguer votre code. Il affiche
votre composant ci-dessous. Vous pouvez l'ouvrir et le modifier à votre guise. Ce bloc de "Preview" n'est
pas pris en compte dans le calcul du score de votre code.
58 / 111
Réponse
59 / 111
64 <nav>
65 <a id="menu2" routerLink="/menu2">Menu2</a>
66 </nav>
67 <br>
68 <router-outlet></router-outlet>
69 <br>
70 <footer-component id="footer"></footer-component>
71 `
72 })
73 export class PreviewComponent {
74 }
75 // #endregion Preview
76
77
78 // #region Module declaration - Do not Change
79 @NgModule({
80 imports: [RouterModule.forRoot(appRoutes, {useHash: true})],
81 exports: [RouterModule]
82 })
83 export class AppRoutingModule {
84 }
85
86 @NgModule({
87 imports: [
88 RouterModule,
89 AppRoutingModule
90 ],
91 declarations: [
92 PreviewComponent,
93 Menu1Component,
94 Menu2Component,
95 FooterWrapperComponent,
96 FooterAComponent,
97 FooterBComponent
98 ],
99 entryComponents: [PreviewComponent],
100 providers: [{provide: APP_BASE_HREF, useValue : '/'}]
101 })
102 export class PreviewModule { }
103 // #endregion Module declaration
Résultat
Compile
Connaissance du langage +0pts
Bas de page 1
Connaissance du langage +150pts
Bas de page 2
Connaissance du langage +150pts
60 / 111
Question 53: Directive ngFor
Angular 2+ 00:04 / 00:50 0 / 40 pts
Question
Ligne 7, par quoi doit-on remplacer ?? pour que la directive ngFor puisse fonctionner ?
Réponse
Résultat
Réponse incorrecte
Connaissance du langage +40pts
Réponse(s) correcte(s)
of
61 / 111
Question 54: Subscribe/Unsubscribe
Angular 2+ 00:03 / 00:45 0 / 40 pts
Question
Comment peut-on souscrire et se désabonner (Subscribe/Unsubscribe) automatiquement d'un
Observable en Angular ?
Réponse
Résultat
Réponse incorrecte
Connaissance du langage +40pts
62 / 111
Question 55: Écouter les événements de l'hôte
Angular 2+ 00:03 / 00:45 0 / 40 pts
Question
Quel décorateur peut-on utiliser pour écouter les événements de l'élément hôte depuis une directive
fille?
Réponse
@HostListener
@Listener
@Target
@Event
Résultat
Réponse incorrecte
Connaissance du langage +40pts
63 / 111
Question 56: Symbole de référence locale
Angular 2+ 00:03 / 00:40 0 / 40 pts
Question
Angular vous permet de créer une référence locale pour des tags html/input dans les templates.
Réponse
Résultat
Réponse incorrecte
Connaissance du langage +40pts
64 / 111
Question 57: Cycle de vie Angular
Angular 2+ 00:03 / 00:40 0 / 40 pts
Question
Parmi les propositions suivantes, laquelle n'est pas une méthode du cycle de vie Angular ?
Réponse
ngOnChanges
ngOnDestroy
ngAfterViewInit
ngContentChange
Résultat
Réponse incorrecte
Connaissance du langage +40pts
65 / 111
Question 58: Formulaires Angular
Angular 2+ 00:03 / 00:35 0 / 40 pts
Question
Quels types de formulaires peut-on créer avec Angular ?
Réponse
Reactive Forms
Component Forms
Directive Forms
Active Forms
Résultat
Réponse incorrecte
Connaissance du langage +40pts
66 / 111
Question 59: Affichage par route
Angular 2+ 00:03 / 00:35 0 / 40 pts
Question
Quel tag est utilisé pour afficher du contenu différent en fonction de la route ?
Réponse
<router></router>
<router-output></router-output>
<route></route>
<router-outlet></router-outlet>
Résultat
Réponse incorrecte
Connaissance du langage +40pts
67 / 111
Question 60: Extension Chrome pour debugging
Angular 2+ 00:03 / 00:30 0 / 40 pts
Question
Parmi les propositions ci-contre, quelle est celle qui désigne une extension Chrome pour débugguer les
apps Angular ?
Réponse
ngrx
npx
npm
Angular DevTools
Résultat
Réponse incorrecte
Connaissance du langage +40pts
68 / 111
Question 61: Affichage d'une propriété
Angular 2+ 00:03 / 00:35 0 / 40 pts
Question
Comment peut-on afficher une propriété définie dans un composant ?
Réponse
par interpolation
en utilisant un filtre
Résultat
Réponse incorrecte
Connaissance du langage +40pts
69 / 111
Question 62: Type de retour HttpClient
Angular 2+ 00:03 / 00:30 0 / 40 pts
Question
Que retourne chacun des services d'appel http (get, post, etc.) du service HttpClient ?
Réponse
Un objet
Un observable
Une promise
Un callback
Résultat
Réponse incorrecte
Connaissance du langage +40pts
70 / 111
Question 63: Routes non trouvées
Angular 2+ 00:03 / 00:30 0 / 40 pts
Question
Quelle syntaxe peut-on utilser pour matcher et traiter les routes non-trouvées ?
Réponse
**
&&
Résultat
Réponse incorrecte
Connaissance du langage +40pts
71 / 111
Question 64: Route avec accès non-autorisé
Angular 2+ 00:03 / 00:30 0 / 40 pts
Question
Comment pouvez-vous protéger une certaine route contre les accès non-autorisés ?
Réponse
en utilisant un UrlMatcher
Résultat
Réponse incorrecte
Connaissance du langage +40pts
72 / 111
Question 65: Passage de données parent-enfant
Angular 2+ 00:03 / 00:30 0 / 40 pts
Question
Quelle syntaxe permet de passer une donnée d'un composant parent à un parent fils ?
Réponse
@Input()
@Output()
Input
Output
Résultat
Réponse incorrecte
Connaissance du langage +40pts
73 / 111
Question 66: Passage de données d'enfant vers parent
Angular 2+ 00:03 / 00:30 0 / 40 pts
Question
Quelle syntaxe utiliseriez-vous pour passer une donnée d'un fils vers son composant parent ?
Réponse
Output
Input
@Output()
@Input()
Résultat
Réponse incorrecte
Connaissance du langage +40pts
74 / 111
Question 67: Lazy routes
Angular 2+ 00:03 / 00:30 0 / 40 pts
Question
Quelle propriété de l'objet Routes permet de définir des routes chargées à la volée (lazy loading) ?
Réponse
lazyRoutes
children
route
loadChildren
Résultat
Réponse incorrecte
Connaissance du langage +40pts
75 / 111
Question 68: Accèder aux paramètres de route
Angular 2+ 00:03 / 00:30 0 / 40 pts
Question
Quel service peut-on utiliser pour récupérer les paramètres de route depuis un composant ?
Réponse
Route
Router
ActivatedRoute
CurrentRoute
Résultat
Réponse incorrecte
Connaissance du langage +40pts
76 / 111
Question 69: Définition des routes filles
Angular 2+ 00:03 / 00:30 0 / 40 pts
Question
Au sein de l'objet de type Routes , quelle propriété permet de définir des routes filles ?
Réponse
loadChildren
route
children
childRoutes
Résultat
Réponse incorrecte
Connaissance du langage +40pts
77 / 111
Question 70: Angular CLI
Angular 2+ 00:03 / 00:30 0 / 40 pts
Question
Quelle commande ne fait pas partie de la CLI Angular ?
Réponse
ng test
ng lint
ng exit
ng deploy
Résultat
Réponse incorrecte
Connaissance du langage +40pts
78 / 111
Question 71: [(ngModel)] import
Angular 2+ 00:03 / 00:30 0 / 40 pts
Question
Quel module doit-on importer pour pouvoir utiliser [(ngModel)] ?
Réponse
NgModule
BrowserModule
FormsModule
InputModule
Résultat
Réponse incorrecte
Connaissance du langage +40pts
79 / 111
Question 72: Composant comptabilité : appels de services
Angular 2+ 00:10 / 30:00 0 / 400 pts
80 / 111
Question
Dans cet exercice, on vous demande de créer un composant nommé AccountComponent ayant pour
sélecteur account-component .
Le composant représente un page d'administration d'une application financière depuis laquelle
l'utilisateur peut 1) créer des comptes et 2) déposer (top up) de l'argent sur n'importe quel compte
existant..
Ce composant doit utiliser le service AccountingService pour implémenter ces 2 opérations. Une
solution qui modifierait ou n'utiliserait pas le service ne sera pas considérée comme correcte.
Pour chaque opération, vous devez:
Créez des inputs et des boutons pour permettre l'intéraction avec l'utilisateur. Définir un <div> avec
id='message' pour informer l'utilisateur. Ce champ est commun au deux opérations. Exemple HTML
d'un message :
1. Création de comptes :
Vous devez créer:
un champ <input> avec id='createAccountInput' un bouton avec
id='createAccountButton' .
Vous ne devez pas implémenter de validation du champ. Le composant doit créer un compte avec le
nom donné en entrée quand l'utilisateur clique sur le bouton. Après une création réussie, le message
"Successfully added account" doit s'afficher.
2. Dépôt sur un compte:
Vous devez créer:
un <input> avec id='topupAccountInput' , un autre <input> avec id=
id='topupAmountInput' un bouton avec id='topupAccountButton' .
Si l'utilisateur fournit un compte et une somme valide, le montant doit être ajouté au compte après un
clic sur le bouton. Si l'opération réussit, le message "Current balance: x" doit s'afficher (x est le montant
disponible sur le compte après l'opération).
Quand un nombre négatif (ou 0) est saisi par l'utilisateur, vous ne devez pas appeler le service et vous
devez afficher le message INVALID_INPUT .
Notes :
Vous devez modifier le template ainsi que la classe du composant. Attention aux erreurs possible en
provenance du service. Les messages d'erreurs doivent être affichés à l'utilisateur sans modification. Un
bloc de "Preview" est disponible pour vous permettre de débugguer votre code. Il affiche votre
composant ci-dessous. Vous pouvez l'ouvrir et le modifier à votre guise. Ce bloc de "Preview" n'est pas
pris en compte dans le calcul du score de votre code.
81 / 111
Réponse
82 / 111
Résultat
S'exécute
Connaissance du langage +0pts
83 / 111
Question 73: Directive ngIf
Angular 2+ 00:04 / 01:00 0 / 20 pts
Question
Qu'arrivera-t-il si on clique plusieurs fois sur le bouton tel que défini à la ligne 6 ?
Réponse
84 / 111
Résultat
Réponse incorrecte
Connaissance du langage +20pts
Question
Comment définit-on un data-binding bidirectionnel au niveau d'un champ <input> ?
Réponse
[(ngModel)]
[ngModel]
(ngModel)
{{ngModel}}
Résultat
Réponse incorrecte
Connaissance du langage +20pts
85 / 111
Question 75: Classe de formulaire valide
Angular 2+ 00:04 / 00:40 0 / 20 pts
Question
Quelle classe est ajoutée au niveau d'un formulaire quand celui-ci passe tous les contrôles de validation ?
Réponse
.ng-valid
.ng-invalid
.ng-dirty
.ng-pristine
Résultat
Réponse incorrecte
Connaissance du langage +20pts
86 / 111
Question 76: Angular Material
Angular 2+ 00:04 / 00:40 0 / 20 pts
Question
Quelle librairie populaire permet de faire du "Material Design" d'interfaces en Angular ?
Réponse
Angular Material
Materialize
Bootstrap
Vuetr
Résultat
Réponse incorrecte
Connaissance du langage +20pts
87 / 111
Question 77: Nouvelle application Angular
Angular 2+ 00:05 / 00:30 0 / 20 pts
Question
Quelle ligne de commande permet de créer une nouvelle application Angular ?
Réponse
ng new appName
ng start appName
Résultat
Réponse incorrecte
Connaissance du langage +20pts
88 / 111
Question 78: Trouver le nom
Angular 2+ 00:03 / 01:00 0 / 20 pts
Question
Quel(s) nom(s) seront affichés par ce code ?
Réponse
Theresa
Morris
Duane
Taz
Morris, Duane
89 / 111
Résultat
Réponse incorrecte
Connaissance du langage +20pts
90 / 111
Question 79: Interpolation
Angular 2+ 00:04 / 00:50 0 / 20 pts
Question
Quelle concept Angular est mis en oeuvre dans le template ci-dessous à la ligne 6 pour afficher la
propriété name ?
Réponse
string interpolation
template string
template literal
event binding
Résultat
Réponse incorrecte
Connaissance du langage +20pts
91 / 111
Question 80: Ajout d'entête HTTP
Angular 2+ 00:17 / 00:40 0 / 40 pts
Question
Qu'utiliseriez-vous pour ajouter le même entête HTTP à tous vos appels HTTP ?
Réponse
Un Injector
Un Interceptor
Résultat
Réponse incorrecte
Connaissance du langage +40pts
92 / 111
Question 81: Pipe currency
Angular 2+ 00:03 / 00:50 0 / 40 pts
Question
On suppose que la locale par défaut est en-US . Qu'affichera l'expression de la ligne n°6 ?
Réponse
Résultat
Réponse incorrecte
Connaissance du langage +40pts
Réponse(s) correcte(s)
$200.13
93 / 111
Question 82: Angular app pour la prod
Angular 2+ 00:03 / 00:45 0 / 20 pts
Question
Quelle ligne de commande permet de construire une application Angular pour l'environnement de
production ?
Sélectionner toutes les bonnes réponses.
Réponse
ng build production
ng build
ng build prod
Résultat
Réponse incorrecte
Connaissance du langage +20pts
94 / 111
Question 83: @Input et événements @Output
Angular 2+ 00:05 / 20:00 0 / 150 pts
Question
On vous demande de créer un composant Angular simple nommé CounterComponent ayant
counter-component pour sélecteur.
L'objectif de ce composant est de :
Prendre un message en "input" Lire une valeur d'intervalle saisie par l'utilisateur (entier, en
millisecondes) Envoyer le message en tant qu'événements de manière périodique vers son "output"
Au niveau HTML, le composant est composé d'un champ <input> avec id="intervalInput" et d'un
bouton <button> avec id="intervalSetButton" . L'utilisateur peut modifier l'intervalle en
saisissant une valeur dans le champ puis en cliquant sur le bouton.
Le composant doit avoir un @Input nommé message et un @Output nommé tick . Il doit générer
des événements de type "string" vers tick à intervalle régulier correspondant à la valeur saisie par
l'utilisateur. La chaîne de caractère utilisée pour générer les événements provient de l"input" message .
Le composant doit être capable de gérer les changements du message et les changements de la valeur
de l'intervalle. Notes : Vous devez modifier le template ainsi que la classe du composant. Un bloc de
"Preview" est disponible pour vous permettre de débugguer votre code. Il affiche votre composant ci-
dessous. Vous pouvez l'ouvrir et le modifier à votre guise. Pour vous aider, ce bloc contient un
composant parent qui manipule le composant que vous devez créer (affichage d'un compteur à côté du
message) Ce bloc de "Preview" n'est pas pris en compte dans le calcul du score de votre code.
95 / 111
Réponse
96 / 111
Résultat
Compile
Connaissance du langage +0pts
97 / 111
Question 84: Utilisation des pipes (percent, currency, date)
Angular 2+ 00:05 / 20:00 0 / 300 pts
Question
On vous demande de terminer le composant TransactionDetailsComponent . Vous devez
uniquement modifier la partie template du composant.
L'objectif de ce composant est d'afficher la date, le montant, la devise et les frais associés à une
transaction, chacun dans un format spécifique.
Vous devez afficher 3 divs :
Le div "Fee" (frais)
L'id de ce div doit être fee . Il affiche les frais fee associés à la transaction sous forme de pourcentage :
S'il y a moins de 2 chiffres pour la partie entière de la valeur en pourcentage, vous devez combler avec
des zéros à gauche. S'il y a moins de 2 chiffres dans la partie décimale, vous devez comblez avec zéros à
droite. S'il y a plus de 3 chiffres dans la partie décimale, vous devez arrondir à 3 chiffres. On utilise un
point . en tant que séparateur décimal.
Par exemple 0.031234 s'affiche 03.123% .
Le div "Amount" (montant)
L'id de ce div doit être amount . Il affiche les frais amount et la devise currency de la transaction. Le
symbole de la devise associée au code currency (par exemple € pour EUR ) est affiché avant les frais.
Les frais sont formattés comme suit :
S'il y a moins de 9 chiffres pour la partie entière, vous devez combler avec des zéros à gauche. Le
séparateur des milliers doit être une virgule , . S'il y a moins de 2 chiffres dans la partie décimale, vous
devez comblez avec zéros à droite. S'il y a plus de 2 chiffres dans la partie décimale, vous devez arrondir
à 2 chiffres.
Par exemple currency=EUR , amount=312.562 s'affiche €000,000,312.56 .
Le div "Time" (date)
L'id de ce div doit être time . La date et l'heure de la transaction doivent être affiché dans ce format
inhabituel : 'ww: yyyy MMMMM dd hh-mm-ss'
Notes : Un bloc de "Preview" est disponible pour vous permettre de débugguer votre code. Il affiche
votre composant ci-dessous. Vous pouvez ouvrir ce bloc et le modifier à votre guise. Le bloc de "Preview"
n'est pas pris en compte dans le calcul du score de votre code.
98 / 111
Réponse
99 / 111
Résultat
Compile
Connaissance du langage +0pts
Affichage pourcentage
Connaissance du langage +60pts
Affichage de date
Connaissance du langage +60pts
Affichage EUR
Connaissance du langage +60pts
Affichage JPY
Connaissance du langage +60pts
100 / 111
Question 85: Import de HttpClientModule
Angular 2+ 00:04 / 00:30 0 / 20 pts
Question
Quel module doit-on importer pour utiliser le service HttpClient ?
Réponse
HttpClientModule
HttpModule
RequestModule
TransportModule
ClientModule
Résultat
Réponse incorrecte
Connaissance du langage +20pts
101 / 111
Question 86: Directive structurelle
Angular 2+ 00:04 / 00:30 0 / 20 pts
Question
Parmi les propositions suivantes, laquelle n'est pas un directive structurelle d'Angular ?
Réponse
ngIf
ngFor
ngSwitch
ngUnless
Résultat
Réponse incorrecte
Connaissance du langage +20pts
102 / 111
Question 87: Directive ngClass
Angular 2+ 00:04 / 01:30 0 / 60 pts
Question
Quelle directive built-in Angular peut-on utiliser pour remplacer ???? à la ligne 6 pour d'appliquer la
classe blue de manière conditionnelle ?
Réponse
Résultat
Réponse incorrecte
Connaissance du langage +60pts
103 / 111
Réponse(s) correcte(s)
[ngClass]
[ ngClass ]
Question
On vous demande de créer un composant Angular nommé DisplayComponent et ayant display-
component pour sélecteur.
Il doit utiliser le composant VoterComponent (sélecteur = voter-component ) dont le code est fourni.
DisplayComponent a 3 champs public nommés question , yesAnswer et noAnswer . Ils
représentent une question posée à l'utilisateur et les choix de réponse possibles affichés dans
VoterComponent .
DisplayComponent doit utiliser VoterComponent en tant qu'enfant et doit lui passer question ,
yesAnswer et noAnswer en entrée.
Quand l'utilisateur vote, VoterComponent créé un événement de type boolean vers un @Output
nommé output .
Vous devez afficher le résultat du vote dans DisplayComponent dans un <div> avec id=lastVote :
si output est vrai, alors on affiche la valeur de yesAnswer , sinon on affiche la valeur de noAnswer .
Notes : Un bloc de "Preview" est disponible pour vous permettre de débugguer votre code. Il affiche
votre composant ci-dessous. Vous pouvez l'ouvrir et le modifier à votre guise. Ce bloc de "Preview" n'est
pas pris en compte dans le calcul du score de votre code.
104 / 111
Réponse
105 / 111
1 // Angular 15.x code
2 import { Component, Input, NgModule, Output, EventEmitter } from '@angular/core';
3
4 @Component({
5 selector:'display-component',
6 template: `
7 `
8 })
9 export class DisplayComponent {
10 public question = "Too easy?"
11 public yesAnswer = "Yes";
12 public noAnswer = "No";
13 }
14
15 // VoterComponent: do not change
16 @Component({
17 selector:'voter-component',
18 template: `
19 {{question}}
20 <button (click)="vote(true)">{{yesAnswer}}</button>
21 <button (click)="vote(false)">{{noAnswer}}</button>
22 `
23 })
24 export class VoterComponent {
25 @Input()
26 public question: string;
27
28 @Input()
29 public yesAnswer: string;
30
31 @Input()
32 public noAnswer: string;
33
34 @Output()
35 public output = new EventEmitter<boolean>();
36
37 public vote(vote: boolean): void{
38 this.output.emit(vote);
39 }
40 }
41
42
43
44 // #region Preview
45
46 @Component({
47 template: `<display-component></display-component>`
48 })
49 export class PreviewComponent { }
50 // #endregion Preview
51
52 // #region Module declaration - Do not Change
53 @NgModule({
54 declarations: [PreviewComponent, DisplayComponent, VoterComponent],
55 entryComponents: [PreviewComponent]
56 })
57 export class PreviewModule { }
58 // #endregion Module declaration
106 / 111
Résultat
Compile
Connaissance du langage +0pts
Gère l'événement
Connaissance du langage +75pts
Question
On considère la variable person ayant l'interface suivante :
Elle est initialisée par :
On vous demande de trouver comment obtenir les couples templates / résultats suivants pour toute
variable person implémentant l'interface ci-dessus.
Comportement :
Si le paramètre du pipe name est true , les propriétés firstName et lastName seront retournées
dans un ordre inversé (ex : Last First ). Si le paramètre est false , ou non fourni, l'ordre reste le
même. Si le paramètre du pipe sort est 'same' , les propriétés firstName et lastName seront
retournées sans modification (ex : First Last) . Si le paramètre est 'backwards' ou n'est pas
fourni, les lettres de la chaîne seront retournées dans l'ordre inverse (ex : tsaL tsriF ).
Exemples :
107 / 111
Template Résultat affiché
tsaL tsriF
tsriF tsaL
tsaL tsriF
First Last
tsaL tsriF
Last First
Notes:
Modifier les classes Name et Sort pour implémenter le comportement requis. Le nom de ces classes
ne doit pas être modifé. Un bloc de "Preview" est disponible pour vous permettre de débugguer votre
code. Il affiche votre composant ci-dessous. Vous pouvez l'ouvrir et le modifier à votre guise. Ce bloc de
"Preview" n'est pas pris en compte dans le calcul du score de votre code.
108 / 111
Réponse
109 / 111
Résultat
S'exécute
Connaissance du langage +0pts
110 / 111
Glossaire
Connaissance du langage
La mesure de cette compétence permet de déterminer l'expérience du candidat dans la pratique d'un langage de
programmation. Privilégiez cette compétence si, par exemple, vous recherchez un développeur qui devra être
rapidement opérationnel.
Modélisation
Cette mesure fournit une indication sur la capacité du candidat à appliquer des solutions standard pour résoudre des
problèmes récurrents. Un développeur ayant un bon niveau dans cette compétence augmentera la qualité
(maintenabilité, évolutivité) de vos applications. Cette compétence ne dépend pas spécifiquement d'une technologie.
Privilégiez cette compétence si, par exemple, vous recherchez un développeur qui sera amené à travailler sur les
briques qui structurent vos applications, à anticiper les besoins de demain pour développer des solutions pérennes.
Résolution de problèmes
Cette compétence correspond aux aptitudes du candidat à comprendre et à structurer son raisonnement pour trouver
des solutions à des problèmes complexes. Cette compétence ne dépend pas spécifiquement d'une technologie.
Privilégiez cette compétence si, par exemple, vos applications ont une composante technique importante (R&D,
innovation).
Fiabilité
La fiabilité caractérise la capacité du candidat à réaliser des solutions qui prennent en compte les cas particuliers. Plus
cette compétence est élevée, plus vos applications sont robustes (moins de bugs).
111 / 111