最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

angular的輸入和輸出的使用方法

 更新時間:2018年09月22日 10:36:27   作者:喵先生的進(jìn)階之路  
這篇文章主要介紹了angular的輸入和輸出的使用方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

angular的核心組件化,可以說組件化的相當(dāng)徹底。而要實現(xiàn)組件之間的通信,一個必不可少的就是輸入和輸出。通過對輸入輸出的學(xué)習(xí),更加加深我對組件化的認(rèn)識。

組件的輸入

angular允許使用兩種形式來定義組件的輸入,一種是在裝飾器@Component中使用inputs來定義,另一種是使用@Input來定義。

inputs

首先先介紹在裝飾器中使用的輸入。inputs接收的是一個字符串?dāng)?shù)組,用來指定我們輸入的鍵名。

@Component({
 selector: 'my-component',
 inputs: ['name']
})
class MyComponent {
 name: string;
}

name就會對應(yīng)我們組件中的name變量。

然后我們定義一個組件,當(dāng)然不可避免有的時候會在其他的組件的模板中使用,所以就可以這樣寫。

上級組件

export class AppComponent {
 myName = 'zhangsan';
 ...
}

上級組件的模板

<app-messages [name]="myName"></app-messages>
方括號[]:數(shù)據(jù)綁定,也叫輸入綁定。將等號右邊的變量綁定在左邊[]中的變量上。

我們的組件

@Component({
 selector: 'app-messages',
 inputs: ['name'],
 templateUrl: './messages.component.html',
 styleUrls: ['./messages.component.css']
})
export class MessagesComponent implements OnInit {
 name: string;
}

這里我們就用name接受了上級組件的myName


通過上面的圖,就很容易看輸入數(shù)據(jù)的對應(yīng)關(guān)系。

然后我們打印一下看看變量是否成功輸入了。

export class MessagesComponent implements OnInit {
 name: string;

 ngOnInit() {
  console.log(this.name);
 }
}

成功輸入!

@Input

上面我們實現(xiàn)了組件的數(shù)據(jù)輸入,但是angular并沒有滿足現(xiàn)狀,還提供另外一種輸入的方法,就是@Input。

@Component({
 selector: 'my-component'
})
class MyComponent {
 @Input() name: string;
}

只要在我們的組件中定義變量的時候使用@Input裝飾器就行了。對比上面我們使用inputs時,少了一個二次聲明。這種方法感覺數(shù)據(jù)的傳遞少了一層關(guān)系,更加易于理解,而且代碼也更加的工整。

組件輸出

說完了組件的輸入,下面我們就該聊聊組件的輸出了。要將數(shù)據(jù)從組件中傳遞出去,就要使用輸出綁定。

<button (click)="display()"></button>
圓括號(): 事件綁定,又叫輸出綁定。這里我們監(jiān)聽click事件,然后觸發(fā)display方法。

除了click,angular還有很多內(nèi)置的事件,當(dāng)然,我們在編寫自己的組件的時候,也可以自定義一個事件,來與外部通信。

自定義事件

自定義的事件需要做三件事情:

1.在@Component配置中,制定outputs配置項
2.在配置的屬性中,設(shè)置一個EventEmitter(事件觸發(fā)器)
3.在適當(dāng)?shù)臅r候,也就是要觸發(fā)的方法中,通過EventEmitter觸發(fā)事件

下面看一下示例:

@Component({
 selector: 'my-component',
 outputs: ['newEvent']
})
export class MyComponent {
 newEvent: EventEmitter<string>;
 
 constructor() {
  this.newEvent = new EventEmitter();
 }
 
 display(): void {
  this.newEvent.emit("test event");
 }
}

然后我們就可以通過上面模板中的代碼實現(xiàn)輸出了。

如果想在一個父級的組件中使用這個輸出,就要使用我們自己的事件了。下面看一個示例:

父級組件:

export class AppComponent {
 ...
 showEvent(message: string) {
  console.log(`hello: ${message}`);
 }
}

父級模板:

<app-messages (newEvent)="showEvent($event)"></app-messages>

我們的組件:

@Component({
 selector: 'app-messages',
 outputs: ['newEvent'],
 templateUrl: './messages.component.html'
})
export class MessagesComponent {
 newEvent: EventEmitter<string>;

 constructor(private messageService: MessageService) {
  this.newEvent = new EventEmitter();
 }

 display(): void {
  this.newEvent.emit('test event');
 }
}

我們的組件模板:

<button (click)="display()">觸發(fā)</button>
引用文字

然后點擊觸發(fā),可以看到輸出hello:test event。數(shù)據(jù)輸出成功!

好了我們再來梳理整個輸出過程:

1.我們自定以一個組件,通過內(nèi)置的click事件觸發(fā)display方法,這時就會觸發(fā)我們自定義的事件:newEvent。

2.當(dāng)事件觸發(fā)的時候,他會執(zhí)行上一級的方法:showEvent

3.我們的事件輸出了一個字符串test event,然后通過$event獲取這個輸出結(jié)果,并當(dāng)做參數(shù)傳給上一級的方法showEvent

@Output

同輸入相同,angular也為我們提供了輸出的第二種方式:@Output。

用法與@input類似:

export class MessagesComponent {
 @Output() newEvent: EventEmitter<string>;
}

只有在定義的時候,省去了重新聲明的一步。

官方參考:https://angular.io/api/core/Component

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解ng-alain動態(tài)表單SF表單項設(shè)置必填和正則校驗

    詳解ng-alain動態(tài)表單SF表單項設(shè)置必填和正則校驗

    這篇文章主要介紹了詳解ng-alain動態(tài)表單SF表單項設(shè)置必填和正則校驗,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-06-06
  • angular過濾器實現(xiàn)排序功能

    angular過濾器實現(xiàn)排序功能

    這篇文章主要為大家詳細(xì)介紹了angular過濾器實現(xiàn)排序功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • AngularJS日程表案例詳解

    AngularJS日程表案例詳解

    本文通過實例代碼給大家介紹了AngularJS日程表案例詳解,通過簡單代碼實現(xiàn)了添加事件/完成事件/刪除事件功能,具體代碼大家參考下本文
    2017-08-08
  • angularJs中$http獲取后臺數(shù)據(jù)的實例講解

    angularJs中$http獲取后臺數(shù)據(jù)的實例講解

    今天小編就為大家分享一篇angularJs中$http獲取后臺數(shù)據(jù)的實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • angularjs請求數(shù)據(jù)的方法示例

    angularjs請求數(shù)據(jù)的方法示例

    這篇文章主要給大家介紹了關(guān)于angularjs請求數(shù)據(jù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用angularjs具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • 使用Angular material主題定義自己的組件庫的配色體系

    使用Angular material主題定義自己的組件庫的配色體系

    這篇文章主要介紹了使用Angular material主題定義自己的組件庫的配色體系的相關(guān)知識,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-09-09
  • 詳解關(guān)于Angular4 ng-zorro使用過程中遇到的問題

    詳解關(guān)于Angular4 ng-zorro使用過程中遇到的問題

    這篇文章主要介紹了詳解關(guān)于Angular4 ng-zorro使用過程中遇到的問題,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • Angular中使用響應(yīng)式表單的詳細(xì)步驟

    Angular中使用響應(yīng)式表單的詳細(xì)步驟

    Angular提供了兩種處理表單的方式模板驅(qū)動表單和響應(yīng)式表單(也稱為模型驅(qū)動表單),使用模板驅(qū)動表單時,模板指令被用來構(gòu)建表單的內(nèi)部表示,在本文中,您探討了如何將響應(yīng)式表單應(yīng)用于一個示例 Angular 應(yīng)用程序
    2024-02-02
  • AngularJS ui-router刷新子頁面路由的方法

    AngularJS ui-router刷新子頁面路由的方法

    這篇文章主要介紹了AngularJS ui-router刷新子頁面路由的方法,網(wǎng)上雖然有很多種方法,但是都不適合小編,今天小編給大家分享一個還不錯的方法,需要的朋友可以參考下
    2018-07-07
  • Angular的$http的ajax的請求操作(推薦)

    Angular的$http的ajax的請求操作(推薦)

    這篇文章主要介紹了Angular的$http的ajax的請求操作的相關(guān)資料,需要的朋友可以參考下
    2017-01-01

最新評論

平罗县| 库车县| 榆中县| 彭阳县| 平南县| 罗城| 桂东县| 广饶县| 海盐县| 滦南县| 黑龙江省| 白河县| 武冈市| 彭山县| 康保县| 抚顺市| 黄骅市| 襄垣县| 宁南县| 若羌县| 磐石市| 内乡县| 翁牛特旗| 蕲春县| 五家渠市| 中江县| 喀喇沁旗| 西乌珠穆沁旗| 乐平市| 云阳县| 韩城市| 来宾市| 淳化县| 镇沅| 都兰县| 台中县| 故城县| 闸北区| 肥东县| 会泽县| 溧水县|