溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Angular 4.X開發(fā)實踐中會遇到哪些問題

發(fā)布時間:2021-08-12 09:56:00 來源:億速云 閱讀:89 作者:小新 欄目:web開發(fā)

這篇文章給大家分享的是有關(guān)Angular 4.X開發(fā)實踐中會遇到哪些問題的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

一、使用ngIf或者ngSwitch出錯

在html文件中使用ngIf或者ngSwitch時,會解析出錯,錯誤提示如下:

Error: Template parse errors:
Can't bind to 'ngSwitch' since it isn't a known property of 'div'.

這個是因為沒有在此Component所在的Module中導(dǎo)入CommonModule,雖然你可能在AppModule中導(dǎo)入過了,但是還是需要導(dǎo)入一次,代碼如下:

import { CommonModule } from '@angular/common';
@NgModule(
 {
  declarations: [ ],
  imports: [
   CommonModule
  ],
  exports: [ ],
  providers: [ ]
 }
)
export class MainModule { }

二、多級依賴注入器

Angular 4.X擁有多級依賴注入系統(tǒng),在一個注入器的范圍內(nèi),依賴都是單例的。它使用冒泡機制,當一個組件申請獲得一個依賴時,Angular 先嘗試用該組件自己的注入器來滿足它。 如果該組件的注入器沒有找到對應(yīng)的提供商,它就把這個申請轉(zhuǎn)給它父組件的注入器來處理。 如果那個注入器也無法滿足這個申請,它就繼續(xù)轉(zhuǎn)給它的父組件的注入器。

舉個例子,從登錄頁點擊登錄按鈕進入主頁,LoginComponent和MainComponent都注入了LoginService。

登錄:

//login.service.ts
// 這個是登錄服務(wù)
import { Injectable } from '@angular/core';

@Injectable()
export class LoginService {
 isLoggedIn: boolean = false;
 login(){
  this.isLoggedIn=true;
 }
}
// login.component.ts
//登錄界面,只有一個登錄按鈕,點擊后登錄會把LoginService中的isLoggedIn變?yōu)閠rue

import { Component, OnInit } from '@angular/core';
import { Router } from '@angular/router';
import { LoginService } from '../login/login.service';
@Component({
 selector: 'app-login',
 template:`<button (click)=login()>Login</button>`,
 providers: [LoginService]
})
export class LoginComponent implements OnInit {

 constructor(private router: Router, private loginService: LoginService) { }

 login() {
 this.loginService.login();
 console.log(this.loginService.isLoggedIn); //結(jié)果為true
 this.router.navigate(['/main']);
 }
}
// main.component.ts
// 這個是登陸后的主界面

import { Component} from '@angular/core';
import { LoginService } from '../login/login.service';

@Component({
 selector: 'app-main',
 template: `<h2>HOME</h2>`,
 providers: [LoginService]
})
export class MainComponent implements OnInit {

 private userType: string ;
 constructor(private loginService: LoginService) {
 console.log(this.loginService.isLoginIn); //結(jié)果為false
 }
}

從上面的例子可以看出來,在不同的地方注入同樣的Service,但是會使用不同的實例,所以會導(dǎo)致結(jié)果可能不同,需要注意。

感謝各位的閱讀!關(guān)于“Angular 4.X開發(fā)實踐中會遇到哪些問題”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI