本文最初發表在Okta開發人員博客上。感謝您支持使SitietPoint成為可能的合作夥伴。
Angular(以前稱為Angular 2.0)迅速成為構建現代單頁應用程序的最強大方法之一。核心優勢是Angular專注於構建可重複使用的組件,這有助於您將應用程序中的各種擔憂解散。以身份驗證為例:構建可能會很痛苦,但是一旦將其包裝到組件中,就可以在整個應用程序中重複使用身份驗證邏輯。 >
鑰匙要點
>通過與Okta設置OpenID Connect應用程序無縫集成身份驗證,以確保安全的用戶管理。
已安裝了 >您應該在http:// localhost:4200。
在終端窗口中,將CD CD到您的項目目錄中並運行以下命令。這將創建一個搜索組件。
>
>在src/app/app.component.html中,調整佔位符內容,然後添加標籤以顯示路由。 >現在您已經設置了路由,您可以繼續編寫搜索功能。
為了解決此問題,打開src/app/app.module.ts並添加formsModule作為@ngmodule中的導入:
創建SRC/Assets/data/people.json保存您的數據。
創建此文件的原因是,您可以在單行上導入多個類,而不必在單獨的行上導入每個單獨的類。 >
>
現在,單擊搜索按鈕應起作用。為了使結果看起來更好,請刪除
>
>修改src/app/search/search.component.html添加一個用於編輯人員的鏈接。
運行以下命令以生成editComponent。
>您可以將CSS添加到src/app/edit/edit/edit.component.css,如果要使表單看起來更好。 > 在src/app/edit/edit/edit.component.html中調用save()函數以更新人的數據。您已經在上面實現了這一點。
該函數調用gotolist()函數,該函數將用戶發送回搜索屏幕時,將人的名字附加到URL。
進行所有這些更改後,您應該能夠搜索/編輯/更新一個人的信息。如果有效 - 工作好!
您可能會注意到的一件事是,您可以清除表單中的任何輸入元素並保存。至少應需要名稱字段。否則,搜索結果中沒有任何點擊。
在此屏幕截圖中,您可能會注意到地址字段為空白。這是由您的控制台中的錯誤來解釋的。 要修復,請在所有地址字段中添加名稱屬性。例如: 現在的值應在所有字段中顯示,並需要在所有字段中顯示。 如果您想提供自己的驗證消息而不是依靠瀏覽器,請完成以下步驟:
>利用路由來管理應用程序中的導航,允許使用更順暢的用戶流和更好的狀態管理。
實施表單驗證以確保數據完整性並提供反饋,從而提高了總體可用性。
大約20分鐘
>最喜歡的文本編輯器或IDE。我推薦Intellij Idea<span>git clone https://github.com/mraible/ng-demo.git
</span>
這將創建一個NG-DEMO項目並在其中運行NPM安裝。完成大約需要一分鐘的時間,但這可能會根據您的連接速度而有所不同。 >
<span>git clone https://github.com/mraible/ng-demo.git
</span>
>您可以確保新項目的測試通過,運行NG測試:
ng new ng-demo
添加搜索功能,在IDE或您喜歡的文本編輯器中打開項目。對於Intellij Idea,請使用文件>新項目>靜態網絡,並指向NG-DEMO目錄。
<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 serve
$ 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>
$ 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
獲得搜索結果,請創建一個向JSON文件提出HTTP請求的搜索服務。首先生成新服務。
<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>
<span>import { Routes, RouterModule } from '@angular/router';
</span>
<span>const appRoutes: Routes = [
</span> <span>{path: 'search', component: SearchComponent},
</span> <span>{path: '', redirectTo: '/search', pathMatch: 'full'}
</span><span>];
</span>
<span><span>@NgModule</span>({
</span> <span>...
</span> imports<span>: [
</span> <span>...
</span> RouterModule<span>.forRoot(appRoutes)
</span> <span>]
</span> <span>...
</span><span>})
</span><span>export class AppModule { }
</span>
<span>git clone https://github.com/mraible/ng-demo.git
</span>
ng new ng-demo
<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 serve
標籤,然後在src/app/app/search/search.component.html中替換為
。
然後,在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>
$ 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>
>
<span>import { Routes, RouterModule } from '@angular/router';
</span>
<span>const appRoutes: Routes = [
</span> <span>{path: 'search', component: SearchComponent},
</span> <span>{path: '', redirectTo: '/search', pathMatch: 'full'}
</span><span>];
</span>
<span><span>@NgModule</span>({
</span> <span>...
</span> imports<span>: [
</span> <span>...
</span> RouterModule<span>.forRoot(appRoutes)
</span> <span>]
</span> <span>...
</span><span>})
</span><span>export class AppModule { }
</span>
<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>
>在src/app/app.module.ts中為此組件添加路由:<span>import { FormsModule } from '@angular/forms';
</span>
<span><span>@NgModule</span>({
</span> <span>...
</span> imports<span>: [
</span> <span>...
</span> FormsModule
<span>]
</span> <span>...
</span><span>})
</span><span>export class AppModule { }
</span>
<span><span>:host</span> {
</span> <span>display: block;
</span> <span>padding: 0 20px;
</span><span>}
</span>
$ ng g <span>service search
</span>installing <span>service
</span> create src/app/search.service.spec.ts
create src/app/search.service.ts
WARNING Service is generated but not provided, it must be provided to be used
<span>mkdir -p src/app/shared/search
</span><span>mv src/app/search.service.* src/app/shared/search/.
</span>
<span>git clone https://github.com/mraible/ng-demo.git
</span>
ng new ng-demo
<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>
>要命名,請修改edit.component.html,以將所需屬性添加到名稱。
標籤之後添加,然後在最後一個之前將其關閉。您還需要將(ngsubmit)處理程序添加到表格中,然後更改保存按鈕為常規提交按鈕。
$ 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 serve
$ 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>
$ 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
以上是使用OpenID Connect和OKTA在應用中使用OpenID Connect和OKTA設置Angular身份驗證的詳細內容。更多資訊請關注PHP中文網其他相關文章!