天天看點

cuowu

    • ngFor不能用于Object
    • rowspan colspan不能綁定變量,要用attr.colspan 

      https://stackoverflow.com/questions/35615751/why-is-colspan-not-a-known-native-attribute-in-angular-2/35616510

    • 定義函數要仔細,注意引用對象的問題 ,可以用Object. assign
    • 所有使用的東西都要在子產品中注冊,除了服務
    • ng-bootsrap modal彈窗一直沒出來,問題:安裝的bootstrap版本不對
    • 元件作為modal内容的時候,需要設定成entryComponents
    • “/animations/browser”’ has no exported member ‘ɵDomAnimationEngine’ BrowserAnimationModule子產品的版本問題,@angular/animations 4.1.3沒有問題
    • expression changed after it has been checked error 錯誤,可以參見Everything you need to know about the 

      ExpressionChangedAfterItHasBeenCheckedError

       error
    • 後端傳回檔案,前端如何下載下傳,responseType:blob轉成blob然後下載下傳
    • button忘了加type=“button”屬性,按enter的時候就會觸發。因為button在IE之外的浏覽器預設屬性為submit,是以觸發了。
      • Angular開發者常常會犯以下的錯誤:
        • 架構名稱:沒有Angular 1和Angular 2, 隻有AngularJS和Angular。Angular的第三方庫,建議用ngx-為字首,而不是ng2-。因為Angular每6個月會更新一次,你懂的。。。
        • ngOnChanges

          監聽輸入對象的變化,但僅限于它的引用,也就是說,如果對象的某個屬性發生變化,Angular是不會觸發

          onChanges

          的。解決方法:用

          ngDoCheck

          鈎子代替;用不可變對象作為輸入;将對象分解為基本變量;使用訂閱對象。
        • 使用訂閱對象時,别忘了在

          ngOnDestroy

          鈎子中銷毀,否則會造成記憶體洩漏。
        • 重複/不必要的取消訂閱:有些情況下Angular會自動銷毀訂閱對象,比如使用async管道的時候;比如短暫時間的訂閱

          Observable.timer(1000).subscribe(…)

          http.get(‘http://medium.com’).subscribe(…)

          ;再比如RxJS自帶的方法,

          take(n)

          takeWhile(predicate)

          first()

           以及

          first(predicate)

          等。
        • 服務應該在子產品注入還是元件注入:在子產品注入的話,該子產品下隻會生成一個服務執行個體,并在子產品下的所有元件共享;如果在元件中注入,每執行個體化一次元件,服務也會執行個體化一次。
        • 直接修改DOM:Angular不再是一個web架構,而是一個平台。Angular應用可以在浏覽器,服務端,甚至用戶端上運作。是以,不要直接取DOM元素,用

          ElementRef

          ,設定屬性用

          this._renderer2.setElementProperty

        • 在多個子產品中聲明元件:Angular中的元件是從屬于子產品的,一個元件不能同時屬于多個子產品。如果遇到多個子產品都需要這個元件的時候,解決方法:如果兩個子產品是父子子產品關系,在子子產品中聲明并導出;否則,建立一個共享子產品,分别導入到需要的兩個子產品中。

繼續閱讀