亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

angular組件繼承如何實現第1/2頁

發布時間:2021-08-02 10:18:26 來源:億速云 閱讀:138 作者:小新 欄目:web開發

這篇文章主要介紹了angular組件繼承如何實現第1/2頁,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

Angular 2.3 版本中引入了組件繼承的功能,該功能非常強大,能夠大大增加我們組件的可復用性。

組件繼承涉及以下的內容:

Metadata:如 @Input()、@Output()、@ContentChild/Children、@ViewChild/Children 等。在派生類中定義的元數據將覆蓋繼承鏈中的任何先前的元數據,否則將使用基類元數據。

Constructor:如果派生類未聲明構造函數,它將使用基類的構造函數。這意味著在基類構造函數注入的所有服務,子組件都能訪問到。

Lifecycle hooks:如果基類中包含生命周期鉤子,如 ngOnInit、ngOnChanges 等。盡管在派生類沒有定義相應的生命周期鉤子,基類的生命周期鉤子會被自動調用。

需要注意的是,模板是不能被繼承的 ,因此共享的 DOM 結構或行為需要單獨處理。了解詳細信息,請查看 - properly support inheritance。

接下來我們來快速體驗的組件繼承的功能并驗證以上的結論,具體示例如下(本文所有示例基于的 Angular 版本是 - 4.0.1):

exe-base.component.ts

import { Component, ElementRef, Input, HostBinding, HostListener, OnInit } from '@angular/core'; @Component({
  selector: 'exe-base', // template will not be inherited template: `
  <div>
    exe-base:我是base組件么? - {{isBase}}
  </div>
 ` }) export class BaseComponent implements OnInit { @Input() isBase: boolean = true; @HostBinding('style.color') color = 'blue'; // will be inherited @HostListener('click', ['$event']) // will be inherited onClick(event: Event) { console.log(`I am BaseComponent`);
  } constructor(protected eleRef: ElementRef) { }

  ngOnInit() { console.dir('BaseComponent:ngOnInit method has been called');
  }
}

exe-inherited.component.ts

import { Component, HostListener, OnChanges, SimpleChanges } from '@angular/core'; import { BaseComponent } from './exe-base.component'; @Component({
  selector: 'exe-inherited',
  template: `
  <div>
   exe-inherited:我是base組件么? - {{isBase}}
  </div>
 ` }) export class InheritedComponent extends BaseComponent implements OnChanges { @HostListener('click', ['$event']) // overridden onClick(event: Event) { console.log(`I am InheritedComponent`);
  }
  ngOnChanges(changes: SimpleChanges) { console.dir(this.eleRef); // this.eleRef.nativeElement:exe-inherited }
}

app.component.ts

import { Component, OnInit } from '@angular/core'; import {ManagerService} from "./manager.service"; @Component({
 selector: 'exe-app',
 template: `
  <exe-base></exe-base>
  <hr/>
  <exe-inherited [isBase]="false"></exe-inherited>
 ` }) export class AppComponent {
 currentPage: number = 1;
 totalPage: number = 5;
}

接下來我們簡要討論一個可能令人困惑的主題,@Component() 中元數據是否允許繼承?答案是否定的,子組件是不能繼承父組件裝飾器中元數據。限制元數據繼承,從根本上說,是有道理的,因為我們的元數據用是來描述組件類的,不同的組件我們是需要不同的元數據,如 selector、template 等。Angular 2 組件繼承主要還是邏輯層的復用,具體可以先閱讀完下面實戰的部分,再好好體會一下哈。

現在我們先來實現一個簡單的分頁組件,simple-pagination.component.ts

import { Component, Input, Output, EventEmitter } from '@angular/core'; @Component({
  selector: 'simple-pagination',
  template: `
    <button (click)="previousPage()" [disabled]="!hasPrevious()">Previous</button> 
    <button (click)="nextPage()" [disabled]="!hasNext()">Next</button>
    <p>page {{ page }} of {{ pageCount }} </p>
  ` }) export class SimplePaginationComponent { @Input() pageCount: number; @Input() page: number; @Output() pageChanged = new EventEmitter<number>();

  nextPage() { this.pageChanged.emit(++this.page);
  }

  previousPage() { this.pageChanged.emit(--this.page);
  }

  hasPrevious(): boolean { return this.page > 1;
  }

  hasNext(): boolean { return this.page < this.pageCount;
  }
}

app.component.ts

import { Component, OnInit } from '@angular/core'; import {ManagerService} from "./manager.service"; @Component({
 selector: 'exe-app',
 template: `
  <simple-pagination12下一頁閱讀全文

感謝你能夠認真閱讀完這篇文章,希望小編分享的“angular組件繼承如何實現第1/2頁”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

桂林市| 清丰县| 九龙坡区| 玉山县| 尼勒克县| 红桥区| 芜湖县| 肥东县| 桐城市| 民勤县| 瓮安县| 诸城市| 辽宁省| 和硕县| 唐河县| 漾濞| 涡阳县| 镶黄旗| 蕲春县| 观塘区| 集贤县| 安阳市| 昭苏县| 买车| 辽阳市| 即墨市| 德州市| 田林县| 东安县| 漳州市| 吴江市| 沭阳县| 肥城市| 锦州市| 车险| 黄陵县| 新丰县| 绥化市| 汶川县| 梓潼县| 磴口县|