
この記事は、もともとOkta Developer Blogで公開されました。 SitePointを可能にしてくれたパートナーをサポートしてくれてありがとう。
Angular(以前はAngular 2.0と呼ばれていた)は、最新のシングルページアプリを構築する最も強力な方法の1つになりつつあります。コア強度は、再利用可能なコンポーネントを構築することにAngularの焦点であり、アプリケーションのさまざまな懸念を分離するのに役立ちます。たとえば、認証を取得してください:構築するのは苦痛ですが、コンポーネントにラップすると、アプリケーション全体で認証ロジックを再利用できます。
Angular CLIにより、新しいコンポーネント、さらにはプロジェクト全体を簡単に足場にすることができます。 Angular CLIを使用してAngular Codeをすばやく生成していない場合は、おやつを求めています!キーテイクアウト
すぐに足を踏み入れて、角CLIを使用して新しい角度アプリケーションを実行し、開発効率を高めます。
OKTAとOpenID Connectアプリをセットアップし、安全なユーザー管理を確保することにより、認証をシームレスに統合します。
Angularの強力なコンポーネントシステムを利用して、検索機能を追加して編集してユーザーエクスペリエンスを強化します。
ルーティングを利用してアプリケーション内のナビゲーションを管理し、よりスムーズなユーザーフローとより良い状態管理を可能にします。
フォーム検証を実装して、データの整合性を確保し、フィードバックを提供し、全体的な使いやすさを向上させます。
Angular's AuthGuardを使用して、機密情報を保護し、認証を実施するために、Angular's AuthGuardを使用してアプリケーションルートを安全に保護します。
角度アプリケーションを作成します-
- ヒント:Angularアプリケーションの構築をスキップして認証を追加する場合は、NG-DEMOプロジェクトをクローンしてから、OKTAセクションでOpenID Connectアプリの作成をスキップできます。 >
-
必要なもの-
- 約20分
- お気に入りのテキストエディターまたはIDE。 Intellijのアイデアをお勧めします
node.jsとnpmインストール。 nvmを使用することをお勧めします
Angular CLIがインストールされました。 Angular CLIがインストールされていない場合は、npmインストールを使用してインストールします-g @angular/cli
NG新しいコマンドを使用して新しいプロジェクトを作成します:
<span>git clone https://github.com/mraible/ng-demo.git
</span>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
これにより、NG-DEMOプロジェクトが作成され、NPMインストールが実行されます。完了するまでに約1分かかりますが、接続速度によって異なる場合があります。
ng -versionで使用しているAngular CLIのバージョンを見ることができます。
-
角度アプリケーションを実行します-
プロジェクトは、WebPack Dev Serverで構成されています。それを開始するには、NG-DEMOディレクトリにいることを確認して、次に実行してください。
<span>git clone https://github.com/mraible/ng-demo.git
</span>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
http:// localhost:4200で以下のような画面が表示されます。
新しいプロジェクトのテストが合格し、NGテストを実行することを確認できます。
検索機能を追加
検索機能を追加するには、IDEまたはお気に入りのテキストエディターでプロジェクトを開きます。 Intellijのアイデアについては、ファイル>新しいプロジェクト> Static Webを使用して、NG-DEMOディレクトリを指してください。
端末ウィンドウで、プロジェクトのディレクトリにCDを入れて、次のコマンドを実行します。これにより、検索コンポーネントが作成されます
src/app/search/search.component.htmlを開き、デフォルトのhtmlを次のものに置き換えます。
Angularのルータードキュメントは、生成したばかりのSearchComponentへのルートをセットアップするために必要な情報を提供します。簡単な要約を次に示します:
<span>[mraible:~/dev] $ ng new ng-demo
</span>installing ng
create .editorconfig
create README.md
create src/app/app.component.css
create src/app/app.component.html
create src/app/app.component.spec.ts
create src/app/app.component.ts
create src/app/app.module.ts
create src/assets/.gitkeep
create src/environments/environment.prod.ts
create src/environments/environment.ts
create src/favicon.ico
create src/index.html
create src/main.ts
create src/polyfills.ts
create src/styles.css
create src/test.ts
create src/tsconfig.app.json
create src/tsconfig.spec.json
create src/typings.d.ts
create .angular-cli.json
create e2e/app.e2e-spec.ts
create e2e/app.po.ts
create e2e/tsconfig.e2e.json
create .gitignore
create karma.conf.js
create package.json
create protractor.conf.js
create tsconfig.json
create tslint.json
Successfully initialized git.
Installing packages <span>for tooling via npm.
</span>Installed packages <span>for tooling via npm.
</span>You can <span><span>`ng set --global packageManager=yarn`</span>.
</span>Project <span>'ng-demo' successfully created.
</span><span>[mraible:~] 46s $
</span>にインポートします
タグを追加してルートを表示します。
$ ng <span>--version
</span> _ _ ____ _ ___
/ <span>\ _ __ __ _ _ _| | __ _ _ __ / ___| | |_ _|
</span> / △ <span>\ | '_ \ / _` | | | | |/ _` | '__| | | | | | |
</span> / ___ <span>\| | | | (_| | |_| | | (_| | | | |___| |___ | |
</span>/_/ <span>\_\_| |_|\__, |\__,_|_|\__,_|_| \____|_____|___|
</span> <span>|___/
</span>@angular/cli: <span>1.3.2
</span>node: <span>8.4.0
</span>os: darwin x64
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ルーティングセットアップがあるので、検索機能の書き込みを続けることができます。
まだNGサーブランニングがある場合、ブラウザは自動的に更新する必要があります。そうでない場合は、http:// localhost:4200に移動します。空白の画面が表示される可能性があります。 JavaScriptコンソールを開くと、問題が表示されます
これを解決するには、src/app/app.module.tsを開き、@ngmoduleのインポートとしてformsmoduleを追加してください:
検索フォームが表示されるはずです。
このコンポーネントにCSSを追加する場合は、src/app/search/search.component.cssを開き、CSSを追加します。たとえば、$ ng <span>test
</span><span>...
</span>Chrome <span>60.0.3112 (Mac OS X 10.12.6): Executed 3 of 3 SUCCESS (0.239 secs / 0.213 secs)
</span>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
このセクションでは、Angular CLIを使用した基本的な角度アプリケーションに新しいコンポーネントを生成する方法を示しました。次のセクションでは、JSONファイルとLocalStorageを作成して使用して偽のAPIを作成する方法を示します。
検索結果を取得するには、JSONファイルにHTTPリクエストを作成するSearchServiceを作成します。新しいサービスを生成することから始めます。
生成されたSearch.service.tsとそのテストをApp/共有/検索に移動します。このディレクトリを作成する必要があります。
$ ng g component search
installing component
create src/app/search/search.component.css
create src/app/search/search.component.html
create src/app/search/search.component.spec.ts
create src/app/search/search.component.ts
update src/app/app.module.ts
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
SRC/Assets/Data/People.jsonを作成して、データを保持します
src/app/shared/search/search.service.tsを変更し、そのコンストラクターの依存関係としてHTTPを提供します。この同じファイルで、すべての人を収集するためにgetall()メソッドを作成します。また、JSONがマーシャリングされる住所と個人のクラスを定義します。
これらのクラスをコンポーネントで消費できるようにするには、src/app/shared/index.tsを編集して、次を追加します。<span>git clone https://github.com/mraible/ng-demo.git
</span>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
このファイルを作成する理由は、個々のクラスを別々の行にインポートする必要があるのではなく、単一行に複数のクラスをインポートできるようにするためです。
クエリと検索の変数を追加できるようになりました。あなたがそこにいる間、コンストラクターを変更してSearchServiceを注入します。
その後、Search()メソッドを実装して、サービスのgetAll()メソッドを呼び出します。
この時点で、ブラウザのコンソールに次のメッセージが表示される可能性があります。
<span>[mraible:~/dev] $ ng new ng-demo
</span>installing ng
create .editorconfig
create README.md
create src/app/app.component.css
create src/app/app.component.html
create src/app/app.component.spec.ts
create src/app/app.component.ts
create src/app/app.module.ts
create src/assets/.gitkeep
create src/environments/environment.prod.ts
create src/environments/environment.ts
create src/favicon.ico
create src/index.html
create src/main.ts
create src/polyfills.ts
create src/styles.css
create src/test.ts
create src/tsconfig.app.json
create src/tsconfig.spec.json
create src/typings.d.ts
create .angular-cli.json
create e2e/app.e2e-spec.ts
create e2e/app.po.ts
create e2e/tsconfig.e2e.json
create .gitignore
create karma.conf.js
create package.json
create protractor.conf.js
create tsconfig.json
create tslint.json
Successfully initialized git.
Installing packages <span>for tooling via npm.
</span>Installed packages <span>for tooling via npm.
</span>You can <span><span>`ng set --global packageManager=yarn`</span>.
</span>Project <span>'ng-demo' successfully created.
</span><span>[mraible:~] 46s $
</span>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
上から「プロバイダーなし」エラーを修正するには、app.module.tsを更新してSearchServiceをインポートし、プロバイダーのリストにサービスを追加します。 SearchServiceはHTTPに依存するため、HTTPModuleもインポートする必要があります。
$ ng <span>--version
</span> _ _ ____ _ ___
/ <span>\ _ __ __ _ _ _| | __ _ _ __ / ___| | |_ _|
</span> / △ <span>\ | '_ \ / _` | | | | |/ _` | '__| | | | | | |
</span> / ___ <span>\| | | | (_| | |_| | | (_| | | | |___| |___ | |
</span>/_/ <span>\_\_| |_|\__, |\__,_|_|\__,_|_| \____|_____|___|
</span> <span>|___/
</span>@angular/cli: <span>1.3.2
</span>node: <span>8.4.0
</span>os: darwin x64
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
[検索]ボタンをクリックすると動作するはずです。結果の見栄えを良くするには、タグを削除し、src/app/search/search.component.htmlの
ログイン後にコピー
に置き換えます。
今では、検索結果の方が良くなりました。
$ ng <span>test
</span><span>...
</span>Chrome <span>60.0.3112 (Mac OS X 10.12.6): Executed 3 of 3 SUCCESS (0.239 secs / 0.213 secs)
</span>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
しかし、待ってください、あなたはまだ検索機能を持っていません!検索機能を追加するには、SearchServiceに検索()メソッドを追加します。
次に、Query変数を使用してこのメソッドを呼び出すためにSearchComponentをリファクタリングします。
$ ng g component search
installing component
create src/app/search/search.component.css
create src/app/search/search.component.html
create src/app/search/search.component.spec.ts
create src/app/search/search.component.ts
update src/app/app.module.ts
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
今度は、検索結果は入力するクエリ値によってフィルタリングされます。
このセクションでは、検索結果を取得して表示する方法を示しました。次のセクションでは、これに基づいて、レコードを編集および保存する方法を示します。
<span><span><span><h2</span>></span>Search<span><span></h2</span>></span>
</span><span><span><span><form</span>></span>
</span> <span><span><span><input</span> type<span>="search"</span> name<span>="query"</span> [(ngModel)]<span>="query"</span> (keyup.enter)<span>="search()"</span>></span>
</span> <span><span><span><button</span> type<span>="button"</span> (click)<span>="search()"</span>></span>Search<span><span></button</span>></span>
</span><span><span><span></form</span>></span>
</span><span><span><span><pre</span>></span>{{searchResults | json}}<span><span></pre</span>></span>
</span>
ログイン後にコピー
編集機能を追加
src/app/search/search.component.htmlを変更して、人を編集するためのリンクを追加します。
次のコマンドを実行して、editComponentを生成します
import { Routes, RouterModule } from '@angular/router';
const appRoutes: Routes = [
{path: 'search', component: SearchComponent},
{path: '', redirectTo: '/search', pathMatch: 'full'}
];
@NgModule({
...
imports: [
...
RouterModule.forRoot(appRoutes)
]
...
})
export class AppModule { }
でこのコンポーネントのルートを追加します
src/app/edit/edit.component.htmlを更新して、編集可能なフォームを表示します。ほとんどの要素にID属性を追加したことに気付くかもしれません。これは、分度器との統合テストを作成するときに物事を簡単にするためです。
<span><span><span><h1</span>></span>Welcome to {{title}}!<span><span></h1</span>></span>
</span><span><!-- Routed views go here -->
</span><span><span><span><router-outlet</span>></span><span><span></router-outlet</span>></span>
</span>
ログイン後にコピー
editComponentを変更してモデルとサービスのクラスをインポートし、SearchServiceを使用してデータを取得します。
SearchServiceを変更して、IDで人を見つける機能を含み、保存します。そこにいる間に、LocalStorageの更新されたオブジェクトに注意するように検索()メソッドを変更してください。
この時点で、人を検索して情報を更新できるはずです。
SRC/APP/EDIT/EDIT.COMPONENT.HTMLの
このURLを実行するときにSearchComponentが検索を自動的に実行しないため、次のロジックを追加してコンストラクターに追加します。
<span>git clone https://github.com/mraible/ng-demo.git
</span>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
このサブスクリプションをクリーンアップするには、ondestroyを実装してNgondestroyメソッドを定義する必要があります。
これらすべての変更を行った後、人の情報を検索/編集/更新できるはずです。それが機能する場合 - いい仕事!
フォーム検証<span>[mraible:~/dev] $ ng new ng-demo
</span>installing ng
create .editorconfig
create README.md
create src/app/app.component.css
create src/app/app.component.html
create src/app/app.component.spec.ts
create src/app/app.component.ts
create src/app/app.module.ts
create src/assets/.gitkeep
create src/environments/environment.prod.ts
create src/environments/environment.ts
create src/favicon.ico
create src/index.html
create src/main.ts
create src/polyfills.ts
create src/styles.css
create src/test.ts
create src/tsconfig.app.json
create src/tsconfig.spec.json
create src/typings.d.ts
create .angular-cli.json
create e2e/app.e2e-spec.ts
create e2e/app.po.ts
create e2e/tsconfig.e2e.json
create .gitignore
create karma.conf.js
create package.json
create protractor.conf.js
create tsconfig.json
create tslint.json
Successfully initialized git.
Installing packages <span>for tooling via npm.
</span>Installed packages <span>for tooling via npm.
</span>You can <span><span>`ng set --global packageManager=yarn`</span>.
</span>Project <span>'ng-demo' successfully created.
</span><span>[mraible:~] 46s $
</span>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
気付くかもしれないことの1つは、フォームの入力要素をクリアして保存できることです。少なくとも、名前フィールドが必要です。それ以外の場合は、検索結果をクリックするものは何もありません。
名前を必要とするには、edit.component.htmlを変更して、。
また、すべてを
以上がアプリでOpenID ConnectとOKTAを使用したAngular認証をセットアップの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。