Angular フラッシュカード

カテゴリースポンサー

Angularは、Googleによって開発・維持されている強力なWebアプリケーション構築フレームワークです。元々は動的アプリケーションのためのHTML拡張として作られたAngularは、スケーラブルで効率的なシングルページアプリケーション(SPA)を構築するための包括的なプラットフォームへと進化しました。TypeScriptとコンポーネントベースのアーキテクチャを活用することで、Angularは複雑なインタラクティブユーザーインターフェースの作成とアプリケーション状態の管理ツールを提供します。

当社のフラッシュカードアプリには、Angularの知識が必要な面接に効果的に対応するための、厳選されたAngular面接問題とその詳細な回答が含まれています。IT Flashcardsは求職者のためのツールだけでなく、現在のキャリアプランに関係なく、知識を強化しテストするための優れた方法です。アプリを定期的に使用することで、最新のAngularのトレンドに常に追いつき、スキルを高いレベルで維持することができます。

アプリからのAngularフラッシュカードのサンプル

App Store または Google Play から当社のアプリをダウンロードして、さらに多くの無料のフラッシュカードを入手するか、すべてのフラッシュカードにアクセスするために購読してください。

AngularでHTTPインターセプターを使用してリクエストとレスポンスを管理する方法を説明してください。

AngularのHTTP Interceptorは、HTTPリクエストとレスポンスを操作するために使用されます。リクエストをインターセプトし、それを変更し、パスします。また、レスポンスをインターセプトし、それを変更し、パスすることもできます。HTTP Interceptorを使用するには、HttpInterceptorインタフェースを実装するサービスを作成する必要があります。

以下は、インターセプターをアプリケーションに追加する方法を示すコードです:
import { Injectable } from '@angular/core';
import { HttpInterceptor, HttpRequest, HttpHandler, HttpEvent } from '@angular/common/http';
import { Observable } from 'rxjs';

@Injectable()
export class MyHttpInterceptor implements HttpInterceptor {
 
  intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {

    // ここでリクエストを修正します
    const modifiedReq = req.clone({
      headers: req.headers.set('Authorization', 'My value'),
    });

    // ここでリクエストをパスします
    return next.handle(modifiedReq);

  }

}

インターセプターが定義されたら、それをアプリケーションモジュールのプロバイダーの配列に追加する必要があります:
@NgModule({
  ...
  providers: [
    { provide: HTTP_INTERCEPTORS, useClass: MyHttpInterceptor, multi: true },
  ],
  ...
})
export class AppModule { }

'multi'がtrueに設定されていることに注意してください。これにより、複数のインターセプターを追加することができ、それらは提供された順序で実行されます。インターセプターの順序は重要です。各後続のインターセプターは、前のインターセプターからリクエストを受け取るため、前のインターセプターによって行われたすべての変更が次のインターセプターに表示されます。

@Input() と @Output() を使用したAngularコンポーネントでのデータバインディングの仕組みは?

データバインディングは、Angularのプログラミングにおいて重要な側面です。これにより、コンポーネント間でデータを動的に転送することが可能になります。データバインディングには、@Inputと@Outputの2つの手法が含まれます。

@Inputは、親コンポーネントから子コンポーネントへの値の転送を可能にします。これは、いわゆるワンウェイデータバインディング技術であり、データはコンポーネントの階層構造の上から下へと流れます。これを使用して、親コンポーネントで可視化する必要がある変数をマークします。

@Inputの使用例:
<!--parent.component.html-->
<app-child [childMessage]="parentMessage"></app-child>

// parent.component.ts
parentMessage = "Hello from parent";

// child.component.ts
import {Component,Input }  from '@angular/core';
//..
@Input() childMessage: string;

上記の例では、parent.component.tsの`parentMessage`がchild.component.tsの`childMessage`に渡されます。

一方、@Outputは、逆方向の通信、つまり子コンポーネントから親への通信を可能にします。これはいわゆるイベントバインディング技術です。@Output()デコレータを使用することで、子コンポーネントでイベントをトリガーし、親コンポーネントでそれを処理することができます。

@Outputの使用例:
<!--parent.component.html-->
<app-child (messageEvent)="receiveMessage($event)"></app-child>

// parent.component.ts
receiveMessage($event) {
  this.message = $event
}

// child.component.ts
import { Component, Output, EventEmitter } from '@angular/core';
//..
@Output() messageEvent = new EventEmitter<string>();

この場合、child.component.tsで`messageEvent`がトリガーされると、parent.component.tsの`receiveMessage`関数が呼び出され、`messageEvent`によって送信された値を受け取ります。

NgModelとは何で、Angularのフォームでどのように使用されますか?

NgModelは、フォームで双方向データバインディングを作成するために使用されるAngularのディレクティブです。双方向データバインディングとは、モデルからビューへのデータの伝送と、ビューからモデルへのデータの伝送を意味します。実際には、これはフォームフィールドでユーザーによって行われた変更がデータモデルに反映され、データモデルの変更がフォームで確認できることを意味します。

フォームでNgModelディレクティブを使用することはとても簡単です。適切なフォーム要素に配置し、[(ngModel)]構文を使用して適切なモデルフィールドにバインドします。

例えば:
<form>
  <label for="name">Name:</label>
  <input id="name" [(ngModel)]="person.name">

  <label for="age">Age:</label>
  <input id="age" [(ngModel)]="person.age">
</form>

ここで、"person.name"と"person.age"は、対応するフォームフィールドにバインドされたデータモデルフィールドです。これらのフォームフィールドでユーザーによって行われたどんな変更も自動的に"person"モデルに反映されます。

NgModelディレクティブを使用するためには、アプリケーションモジュールでFormsModuleをインポートする必要があることを覚えておいてください。

AngularのZone.jsとは何か、そしてそれがアプリケーションのパフォーマンスにどのような影響を与えるか?

Zone.jsは、JavaScriptの非同期操作の追跡を可能にするライブラリです。Angularの文脈では、Zone.jsは変更検出機構の主要なコンポーネントです。

Zone.jsは「ゾーン」という概念を導入する。これはグローバルな実行コンテキストであり、それぞれの非同期操作は常にその操作を開始したゾーン内で発生します。結果として、操作が開始され、終了する時点を追跡することができます。

例:
最初の操作はsetTimeoutをトリガーすることができ、次の操作はイベントループの次のラウンドでスケジュールされます。これらは二つの独立した操作であるにも関わらず、Zone.jsによってそれらを一つの全体として追跡することができます - これが非同期トラッキングです。

Angularでは、Zone.jsはフレームワークに変更検出を開始するタイミングを通知するために使用されます。すべてのユーザーアクション、タイマー、またはhttpリクエストは「angularゾーン」内で実行されます。"angular zone" の操作が完了すると、Angularは自動的に変更検出を引き起こします。

このメカニズムにより、Angularはビューをリフレッシュするのが適切なタイミングを知ることができます。そのため、Zone.jsはパフォーマンスにとって重要です。Zone.jsがなければ、Angularは変更検出を引き起こすタイミングを知るためにポーリングのような手法を使用する必要があり、それは非常に非効率的です。

しかし、Zone.jsがAngularのパフォーマンスにプラスの影響を与える一方で、マイナスの影響を与える可能性もあります。アプリケーションがアプリケーションの状態に影響を及ぼさない大量の非同期操作を実行する場合でも、Angularは変更検出を引き起こします。大量の操作の場合、これはパフォーマンスを損なう可能性があります。これを防ぐためには、これらの操作を"angular zone"の外で実行することができます。

ダウンロード ITフラッシュカード 今すぐ

当社のフラッシュカードでAngularの知識を広げよう。
プログラミングの基礎から高度な技術の習得まで、ITフラッシュカードはITの卓越性へのパスポートです。
今すぐダウンロードして、今日の競争力のある技術世界での可能性を発見しましょう。