Fornisce l'accesso dall'interno della classe componente all'oggetto ElementRef per il <p> con la variabile di riferimento del modello bio nella visualizzazione del modello del componente.
Indica che il <p> di cui viene eseguito il rendering come figlio della visualizzazione padre che utilizza questo componente.
Rende il <p> nel modello supporta la proiezione del contenuto.
Rende il <p> visibile nel rendering finale. Se il #bio è stato utilizzato nel modello e il @ViewChild non è stato utilizzato nella classe, Angular nasconderà automaticamente il valore <p> che ha #bio su di esso.
D2. Quale metodo viene utilizzato per collegare un FormControl a un elemento di input DOM nativo in moduli reattivi?
Aggiungere il nome della stringa assegnato a FormControl a un attributo denominato controlli nella finestra di dialogo <form> per indicare quali campi deve includere.
Utilizzare la sintassi di associazione tra parentesi quadre attorno all'attributo value sull'elemento DOM e impostarlo uguale a un'istanza di FormControl.
Utilizzare la direttiva formControlName e impostare il valore uguale al nome della stringa assegnato a FormControl.
Utilizzare il nome della stringa assegnato a FormControl come valore per l'attributo id dell'elemento DOM.
D3. Qual è la differenza tra il paramMap E la queryParamMap sul ActivatedRoute classe?
ParamMap è un oggetto letterale dei parametri nel percorso URL di una route. QueryParamMap è un Observable di quegli stessi parametri.
ParamMap è un Oggetto osservabile che contiene i valori dei parametri che fanno parte del percorso URL di una route. QueryParamMap è un metodo che accetta una matrice di chiavi e viene utilizzato per trovare parametri specifici in paramMap.
paramMap è il nome legacy di Angular 3. Il nuovo nome è queryParamMap.
Entrambi sono Osservabili contenenti valori della stringa URL della route richiesta. ParamMap contiene i valori dei parametri presenti nel percorso URL e queryParamMap contiene i parametri di query URL.
D4. In base al seguente utilizzo della pipe asincrona e supponendo che il campo della classe users sia un Observable, quante sottoscrizioni agli utenti Observable vengono effettuate?
<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>
Nessuno. La pipe asincrona non viene sottoscritta automaticamente.
Nessuno. La sintassi del modello non è corretta.
Tre. Ce n'è uno per ogni pipe asincrona.
Uno. La pipe asincrona memorizza internamente observables per tipo.
D8. Qual è la sintassi del modello corretta per l'utilizzo della direttiva strutturale ngFor incorporata per eseguire il rendering di un elenco di productNames?
<ul><li [ngFor]="let productName of productNames">{{ productName }}</li></ul>
<ul><lingFor="let productName of productNames">{{ productName }}</li></ul>
<ul><li *ngFor="let productName of productNames">{{ productName }}</li></ul>
<ul><?for productName in productNames { ?><li>{{ productName }}</li><? } ?></ul>
D10. Con la classe di componenti seguente, quale sintassi del modello verrà utilizzata nel modello per visualizzare il valore del campo della classe title?
D11. Qual è lo scopo del metodo valueChanges in un oggetto FormControl?
Viene utilizzato per configurare i valori consentiti per il controllo.
Viene utilizzato per modificare il valore di un controllo in un nuovo valore. Si chiamerebbe tale metodo e si passerebbe il nuovo valore per il campo modulo. Supporta anche il passaggio di una matrice di valori che possono essere impostati nel tempo.
Restituisce un valore booleano in base a se il valore del controllo è diverso dal valore con cui è stato inizializzato.
È un osservabile che emette ogni volta che il valore del controllo cambia, in modo da poter reagire a nuovi valori e prendere decisioni logiche in quel momento.
Rende il itemTotalChanged campo di classe pubblico.
Fornisce un modo per associare i valori al itemTotalChanged campo di classe, in questo modo: <app-shopping-cart [itemTotalChanged]="newTotal"></app-shopping-cart>.
Fornisce un modo per associare gli eventi al itemTotalChanged campo di classe, in questo modo: <app-shopping-cart (itemTotalChanged)="logNewTotal($event)"></app-shopping-cart>.
È semplicemente un modo per mettere un commento davanti a un campo di classe per la documentazione.
Il ngIf è una scorciatoia per l'altro esempio. Quando Angular elabora tale direttiva, scrive un elemento div nel DOM con la proprietà nascosta.
Sono fondamentalmente gli stessi.
Il ngIf non esegue il rendering del div nel DOM se l'espressione è false. Le hidden l'utilizzo della proprietà nasconde il contenuto div nel riquadro di visualizzazione del browser, ma il div è ancora nel DOM.
Il ngIf è valido, ma l'uso del hidden è errata e genererà un errore.
D17. In base al componente seguente, quale sintassi del modello verrà utilizzata per associare il campo titleText di TitleCardComponent alla proprietà title dell'elemento h1?
D18. Cosa sono gli hook angolari per il ciclo di vita?
logger per monitorare lo stato di salute di un'app Angular
provider che possono essere utilizzati per tenere traccia delle istanze dei componenti
pipe incorporate che possono essere utilizzate nei modelli per eventi DOM
metodi denominati riservati per componenti e direttive che Angular chiamerà durante i tempi impostati nella sua esecuzione e possono essere utilizzati per attingere a quei momenti del ciclo di vita
D19. Scegli la descrizione migliore per questo codice di sintassi del modello:
<span>Boss: {{job?.bossName}}</span>
Il ? è l'abbreviazione per la pipe asincrona. Il valore del lavoro deve essere un Osservabile.
Sta usando l'operatore di navigazione sicura (?) sul campo di lavoro. Se il campo job non è definito, l'accesso a bossName verrà ignorato e non si verificherà alcun errore.
Si è verificato un errore nella sintassi del modello. Le? non è valido qui.
Sta giocando il valore del lavoro se ne ha uno; in caso contrario, viene visualizzato il bossName.
D20. Come si configura una definizione di route per un oggetto UserDetailComponent che supporta il percorso URL user/23 (dove 23 rappresenta l'ID dell'utente richiesto)?
Stanno impostando il campo CalloutDirective.fontWeight in base al fatto che il mouse sia o meno sopra l'elemento DOM. HostListener imposta quindi la proprietà CSS font-weight sul valore fontWeight.
Stanno istituendo la direttiva per verificare l'elemento DOM su cui si trova. Se sono stati aggiunti binding di evento per l'ingresso e l'uscita del mouse, utilizzerà questo codice. Altrimenti non accadrà nulla.
Questo è un uso scorretto di HostListener e HostBinding. I decoratori HostListener e HostBinding non fanno nulla sulle direttive; funzionano solo se utilizzati su componenti.
Se l'elemento DOM su cui è posizionata questa direttiva ha la proprietà CSS font-weight impostata su di esso, gli eventi mouseenter e mouseleave verranno generati.
D22. Quale sintassi del modello angolare è possibile utilizzare in questo campo modulo basato su modello per accedere al valore del campo e verificare la convalida all'interno del markup del modello?
Sono gli stessi. Entrambi si tradurranno in una nuova istanza di Logger associata al token FormattedLogger.
La sintassi useClass indica all'iniettore di creare una nuova istanza di Logger e di associarla al token FormattedLogger. La sintassi useExisting si riferisce a un'istanza di oggetto già esistente dichiarata come Logger.
Entrambi si sbagliano. Un tipo forte non può essere utilizzato per useClass o useExisting.
Sono gli stessi. Entrambi faranno sì che il token FormattedLogger sia un alias per l'istanza di Logger.
Il <div> funge da segnaposto. Se il campo della classe di prodotto è "truthy", l'opzione <div> verrà sostituito solo dal product.name valore; in caso contrario, non verrà eseguito il rendering di nulla.
Il <div> verrà sempre renderizzato e, se il campo di prodotto è "veritiero", il <div> conterrà l'elemento product.name valore; In caso contrario, verrà eseguito il rendering del comando <div> elemento senza valore.
Produce un errore, dal momento che ngIf non è una direttiva strutturale incorporata.
Se il campo della classe di prodotto è "truthy", il DOM renderizzato includerà il <div> con il valore del product.name campo. Se non è "veritiero", il DOM renderizzato non conterrà il <div> elemento.
Fornisce un modo per codificare la struttura del documento di un'applicazione Angular. Il @NgModule è una forma di commento del codice inline che viene ignorato dal compilatore TypeScript ma viene visualizzato con una formattazione speciale nelle applicazioni dell'editor di codice.
Dichiara un modulo Angular denominato AppModule e lo rende disponibile per il lazy loading in tutta l'applicazione.
Dichiara un modulo Angular denominato AppModule che contiene un componente bootstrap denominato AppComponent. Quindi registra quel modulo con Angular, in modo che l'app possa avviarsi.
Prima di caricare il Componente utente, il router si iscriverà al Osservabile restituito da un risolvere nella finestra di dialogo Metodo UserResolverService. Questa tecnica può essere utilizzata per ottenere dati precaricati per un rotta.
Dopo il rotta viene eseguita la risoluzione e il componente viene caricato e sottoposto a rendering, il parametro Metodo UserResolverService avrà un metodo denominato utente esecuzione che ripulirà tutte le connessioni dati aperte.
Si è verificato un errore. Il nome della proprietà corretto è onResolve.
Il Componente utente avrà un parametro nel suo costruttore per utenteE la router gestirà l'iniezione di un valore per questo da una chiamata a un utente nella finestra di dialogo Metodo UserResolverService.
Se presente TabsComponente Gli elementi vengono aggiunti alla finestra di dialogo TabsListaComponente modello, verranno inseriti nel modello <ng-content> in fase di esecuzione.
Crea TabComponente componenti nella finestra di dialogo TabsListaComponente modello quando un modello TabsListaComponente viene creata un'istanza.
Fornisce l'accesso dall'interno della classe componente a qualsiasi TabComponente Componenti che sono stati proiettati nel contenuto nella finestra di dialogo <ng-content> per questo componente.
Limita gli elementi consentiti che possono essere inseriti in un TabsListaComponente per consentire solo TabComponente elementi.
Tiene traccia di eventuali modifiche Ul e fallirà lo unit test se ne vengono effettuate.
Viene utilizzato per garantire la stabilità del modello di componente tra più unit test nell'intero gruppo di test.
Forza Angular a eseguire il rilevamento delle modifiche, che eseguirà il rendering del UserCardComponent prima di poter convalidare il relativo modello.
Viene utilizzato per registrare gli eventi di rilevamento delle modifiche nella console durante le esecuzioni degli unit test.
D33. Quando un servizio viene fornito per root e viene anche aggiunto alla configurazione del provider per un modulo lazy-loaded, quale istanza di tale servizio fornisce l'iniettore ai costruttori nel modulo lazy-loaded?
Una nuova istanza di tale servizio viene creata quando il modulo è pigro caricato.
Non è consentito fornire un servizio dello stesso tipo a livello di modulo lazy-loaded.
Se un'istanza del servizio non è stata ancora creata a livello radice. ne creerà uno lì e poi lo userà.
Una singola istanza di quel servizio viene sempre istanziata alla radice ed è l'unica mai utilizzata, anche all'interno di moduli pigri.
D34. Cosa sta facendo il decoratore HostBinding in questa direttiva?
Sta aggiungendo la classe CSS denominata evidenziata a qualsiasi elemento DOM che ha la direttiva appHighlight su di esso.
HostBinding non fa nulla sulle direttive, solo sui componenti.
Sta specificando se l'elemento host ottiene la classe evidenziata aggiunta al suo attributo class, quindi l'evidenziazione del campo della classe di direttiva verrà impostata su true; e se non viene aggiunto sull'host verrà impostato su false.
Sta creando uno stile in linea sull'elemento host con una proprietà CSS denominata highlight impostata su true.
D35. Nei moduli reattivi, quale tipo di classe di modulo Angular viene utilizzato sul DOM nativo <form> elemento per cablarlo?
FormArray
FormControl
FormGroup
all of these answers
D36. Supponendo che il nome utente FormControl sia stato configurato con un validatore minLength, come è possibile impostare una visualizzazione degli errori nel seguente markup dei moduli reattivi per il campo nome utente?
<input type="text"formControlName="username" #userName="ngModer">
<span *ngIf="userName.errors.minlength"›
Username must be at least {{ userName.errors.minlength.requiredLength }} characters.
</span>
Il metodo pipe RxJs è un alias per il metodo subscribe, quindi una chiamata a getSettings eseguirà la query get. L'operatore di ripetizione dei tentativi viene utilizzato per indicare alla chiamata di pipe di riprovare la query get tre volte.
Produrrà un errore in fase di esecuzione perché il metodo pipe non è disponibile al di fuori del Httpclient.get chiamare.
Ogni singola chiamata al metodo getSettings comporterà che Httpclient effettui tre richieste get totali a settingsUrl, il che non è l'ideale perché ci saranno sempre due chiamate extra che non sono necessarie. L'operatore di ripetizione tentativi non deve essere utilizzato in questo modo.
Quando viene sottoscritto il risultato del metodo getSettings, verrà effettuata la chiamata HTTP GET; se fallisce, verrà ritentato fino a tre volte prima che si arrenda e restituisca un errore.
D43. Quando un servizio richiede un'installazione per inizializzare lo stato predefinito tramite un metodo, come è possibile assicurarsi che tale metodo venga richiamato prima che il servizio venga iniettato ovunque?
Inserire invece la logica di quel metodo di servizio nel costruttore del servizio.
Utilizzare un provider di fabbrica a livello di AppModule radice che dipende dal servizio per chiamare tale metodo di servizio.
non è possibile farlo all'avvio dell'applicazione; puoi farlo solo a livello di componente.
Creare un'istanza di un'istanza del servizio a livello globale (ambito finestra) e quindi chiamare tale metodo.
D44. Quale affermazione descrive meglio questo utilizzo del TestBed?
Il TestBed è richiesto ogni volta che si desidera utilizzare un oggetto spia in uno unit test per un provider Angular.
Il TestBed viene utilizzato per testare la vista di un componente.
Il TestBed impalca un NgModule con due provider e gestisce qualsiasi iniezione di dipendenza. Se una classe Angular richiede DataService nel relativo costruttore, TestBed inietterà spy in tale costruttore.
Il TestBed sta configurando il test runner per dirgli di eseguire solo test per i due provider elencati nel suo array di provider.
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.
D45. Qual è la differenza principale tra un componente e una direttiva?
Un componente utilizza una proprietà di metadati del selettore e una direttiva no.
Una direttiva può essere utilizzata per aggiungere eventi personalizzati al DOM e un componente non può.
Un componente ha un modello e una direttiva no.
Una direttiva può essere destinata solo agli elementi DOM nativi.
D46. Cosa si potrebbe aggiungere a questa classe di direttiva per consentire di impostare la lunghezza del troncato durante l'utilizzo della direttiva nel markup?
@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.
D48. Supponendo il DataService è stato registrato nei provider per l'applicazione, quale risposta descrive meglio cosa succede in base al costruttore di questo componente?
Dichiara che il OrderHistoryComponent avrà la propria versione di un DataService e che non dovrebbe mai utilizzare istanze esistenti. Le DataService dovrebbe essere istanziato all'interno della classe come campo privato affinché questo codice sia completo e funzionante.
Quando Angular crea una nuova istanza del OrderHistoryComponent, l'iniettore fornirà un'istanza di un DataService al primo argomento del costruttore del componente. Il costruttore dataService verrà utilizzato per impostare un campo di istanza privata con lo stesso nome sull'istanza.
Fornisce un modo per eseguire solo test dei componenti; il costruttore non viene utilizzato nell'esecuzione effettiva dell'applicazione Angular.
Consente all'elemento personalizzato a cui è destinato il componente di avere una proprietà personalizzata denominata dataService che può essere utilizzato per associare un DataService istanza a.
Il FormControl per username viene configurato per escludere tre validatori dai validatori che è consentito utilizzare.
Il FormControl per username si sta configurando per consentire l'utilizzo di tre possibili validatori: required, maxLengthe uno personalizzato denominato unique. Per abilitarli validators, una direttiva di convalida dovrebbe essere inserita nei campi modulo nel markup.
La convalida non può essere impostata in questo modo in forme reattive.
Il FormControl per username si sta configurando con tre validatori: il required e minLength validatori che provengono da Angular e una funzione di convalida personalizzata denominata unique che verifica la presenza del valore non uguale alla stringa admin.
Registra un provider per il servizio che è disponibile solo a livello di modulo root, non per eventuali moduli figlio.
Registra un provider per il servizio nell'iniettore dell'applicazione radice, rendendo disponibile una singola istanza di esso in tutta l'applicazione.
Fa in modo che il servizio possa essere iniettato solo nel componente bootstrapped per l'applicazione.
Imposta una regola di tempo di compilazione che consente di inserire il tipo di servizio solo nella proprietà dei metadati dei provider della radice NgModule.
InjectionToken aggiunge un'istanza di AppSettings al provider root tramite la chiamata del costruttore InjectionToken, rendendola automaticamente disponibile a tutti i NgModules, servizi e componenti in tutta l'applicazione Angular senza la necessità di iniettarla da nessuna parte.
InjectionToken viene utilizzato per creare un token provider per una dipendenza non di classe. Un valore letterale Object può essere provider come valore per il tipo di provider di dipendenza APP_SETTINGS che può quindi essere iniettato in componenti, servizi, ecc..
InjectionToken viene utilizzato per creare un decoratore dinamico per AppSettings che può essere utilizzato sui parametri del costruttore tramite un decoratore @AppSettings.
Questo codice presenta un errore poiché non è possibile utilizzare un'interfaccia TypeScript per il tipo generico su InjectionToken
D54. Per l'esempio di moduli basati su modello seguente, quale argomento può essere passato al metodo di invio nell'evento click per inviare i dati per il modulo?
Abilita la possibilità di contrassegnare i singoli percorsi per il precaricamento.
Precarica tutte le dipendenze per le route, creando istanze di servizi al primo avvio dell'app
Assicura che tutti i moduli vengano integrati in un singolo file bundle del modulo app.
Configura il router per caricare immediatamente tutte le route che hanno una proprietà loadChildren (route che vengono in genere caricate quando richiesto)
D56. Qual è un modo alternativo per scrivere questo markup per associare il valore del campo della classe userName al h1 proprietà element title?
<h1 [title]="userName">Current user is {{ userName }}</h1>
title="userName"
title="{{ userName }}"
title="{{ 'userName' }}"
L'unico modo per farlo è usare le parentesi quadre.
D57. Cos'è il async pipe facendo in questo esempio?
Non sta facendo nulla, poiché la pipe asincrona non può essere utilizzata in un ngFor affermazione.
Sta configurando il ngFor per supportare più elenchi di utenti contemporaneamente.
Si sta abbonando all'osservabile restituito dal HttpClient.get e il wrapping del valore restituito in modo che possa essere ripetuto nella finestra di dialogo ngFor.
Consente a tutti gli utenti di partecipare al users da eseguire il rendering contemporaneamente al DOM.
D58. Come utilizzeresti questa direttiva nel markup in base al suo valore di selezione
D61. Quale comando Angular CLI verrà eseguito per generare un oggetto UsersComponent e aggiungerlo a SharedModule (nel file shared.module.ts nell'applicazione)?
ng genera componente --newModule=shared
ng genera utenti componenti --module=shared
ng genera utenti componenti --shared
ng genera componente --add=shared
[ricontrolla le risposte]
D62. Come è possibile riscrivere questo markup in modo che il contenitore div non sia necessario nel rendering DOM finale
Questo codice è un errore poiché non è possibile utilizzare un'interfaccia TypeScript per il tipo generico su InjectionToken.
InjectionToken viene utilizzato per creare un token provider per una dipendenza non di classe. Un oggetto lieteral può essere fornito come valore per il tipo di provider di dipendenza APP_SETTINGS che può quindi essere iniettato in componenti, servizi e così via.
InjectionToken aggiunge un'istanza di AppSettings al provider roote tramite la chiamata del costruttore InjectionToken, rendendola automaticamente disponibile a tutti i NgModules, servizi e componenti attraverso l'applicazione Angular senza la necessità di iniettarla da nessuna parte.
InjectionToken viene utilizzato per creare un decoratore dinamico per AppSettings che può essere utilizzato sui parametri del costruttore tramite un decoratore @AppSettings.
[ricontrolla le risposte]
D64. Quali utilità Angular, se presenti, sono necessarie per eseguire lo unit test di un servizio senza dipendenze del costruttore?
È necessario il metodo helper By.css()
Per eseguire il servizio per lo unit test è necessario uno staffaggio di testo.
Nessuno. È possibile creare un'istanza di un servizio e testare l'unità da solo.
La classe TestBed è necessaria per creare un'istanza del servizio.
D65. Qual è la differenza tra canActivate e le protezioni del percorso CanLoad?
CanActivate viene utilizzato per controllare l'accesso. CanLoad viene utilizzato per precaricare i dati per il percorso.
CanLoad viene usato all'avvio dell'app per consentire o negare l'aggiunta di route alla tabella di route. CanActivate viene utilizzato per gestire l'accesso ai percorsi nel momento in cui vengono richiesti.
CanActivate e CanLoad fanno esattamente la stessa cosa.
CanLoad impedisce la consegna e il caricamento di un intero NgModule. CanActivate interrompe il routing a un componente in tale NgModule, ma tale modulo è ancora caricato.
CanActivate vs Canload CanActivate impedisce l'accesso sui percorsi, CanLoad impedisce il caricamento lento.
D66. A cosa serve la proprietà outlet in questo oggetto definizione router?
individuerà tutte le istanze di <document-box> nel DOM e inserire un elemento DocumentComponent al loro interno durante la navigazione del percorso.
Dichiara che il DocumentComponent può essere utilizzato come figlio per un <<document-box> oltre ad essere instradato a.
Eravamo soliti prendere di mira un <router-outlet> con l'attributo name che corrisponde al valore stringa come percorso per il documentComponent di cui eseguire il rendering quando viene instradato.
È una fonte di energia per il router. (sicuramente non la risposta :P)