1. 程式人生 > >Angular2父子元件之間資料傳遞:@Input和@Output (上)

Angular2父子元件之間資料傳遞:@Input和@Output (上)

為了讓大家學習起來輕鬆、易懂,小編儘量做到篇幅短,語言通俗易懂,知識點分段來講,以免太長了看起來很累,也很容易失去耐心閱讀下去,希望大家理解和支援,同時希望大家點贊和分享出去,讓更多的志同道合的朋友來學習


Angular 提供了@Input和@Output語法來處理元件資料的流入流出,接下來我們通過@Input和@Output來演示父子組建之間的資料傳遞


父元件向子元件傳遞資料

父元件傳遞資料到子元件通過@Input方式的現實方式

第一步:定義父元件
ParentComponent.ts(父元件)

import {Component, OnInit} from '@angular/core'
;

@Component({
selector: 'app-parent',
 
templateUrl: './parent.component.html',
 
styleUrls: ['./parent.component.css']
})

export class ParentComponent {

private user: Object = {
name: '',
   
age: '',
   
number: ''
 
};
 
private parent_data: any;

 
next() {
this.parent_data = this.user;
 
}

}

(1).這裡定義了兩個類屬性user和parent_data,

(2).一個next()方法,next方法用於將頁面輸入的資料賦值給parent_data屬性


ParentComponent.html(父元件模版)

<div class="parent_div">
 <p>
父元件</p>
 <div>
   <label>
姓名:</label>
   <input
type="text" [(ngModel)]="user.name">
 </div>
 <div>
   <label>
年齡:</label>
   <input
type="text" [(ngModel)]="user.age">
 </div>
 <div>
   <label>
電話:</label>
   <input
type="text" [(ngModel)]="user.number">
   <input
type="button" value="傳遞資料到子元件" (click)="next()">
 </div>

 
<!---子元件指令 start-->
 
<app-childen [data]="parent_data"></app-childen>
 
<!---子元件指令 end-->
</div>

對應的頁面:


表單輸入資料,點選頁面上的按鈕,呼叫頁面next()方法

(click)="next()"

next()方法內部將輸入的資料user賦值給parent_data。parent_data獲取到資料之後在模版中把獲取到的值再賦給子元件中先前定義好的data變數


<!---子元件指令 start-->
<app-childen [data]="parent_data"></app-childen>
<!---子元件指令 end-->

到這裡父元件就完成 類資料的傳遞,下面我們看看子元件怎麼去接受這個值?

第二步:定義子元件:
ChildenComponent.ts(子元件)

import {Component, OnChanges, Input} from '@angular/core';

@Component({
selector: 'app-childen',
 
templateUrl: './childen.component.html',
 
styleUrls: ['./childen.component.css']
})
export class ChildenComponent implements OnChanges {
@Input() data: string;

 
ngOnChanges() {
console.log(this.data);
 
}
}

(1).這裡定義了一個類屬性data,並且用@Input裝飾器修飾,修飾過後的data變數就具備接受父元件傳過來的資料了,這裡定義的data就是在頁面接收父元件傳遞的data變數,看下面程式碼

<app-childen[data]="parent_data"></app-childen>

(2).還實現了一個onChanges介面,onChanges介面必須實現ngOnChanges方法,用來監控資料的變化,如果父元件的資料發生變化,我們這裡就輸出改變後的資料,父元件中表單輸入的值發生變化,再點選按鈕呼叫next()方法,ngonChanges會檢測到資料變化,console.log(this.data)列印新的輸出到控制檯

下面我們看看效果


個人學習心得,大神路過 ,不喜勿噴
有問題加我微信提問或者留言


相關推薦

Angular2父子元件之間資料傳遞@Input@Output ()

為了讓大家學習起來輕鬆、易懂,小編儘量做到篇幅短,語言通俗易懂,知識點分段來講,以免太長了看起來很累,也很容易失去耐心閱讀下去,希望大家理解和支援,同時希望大家點贊和分享出去,讓更多的志同道合的朋友來學習 Angular 提供了@Input和@Output語法來處理元

Angular2父子元件之間資料傳遞父子元件共享服務通訊

​父子元件共享同一個服務,利用該服務實現雙向通訊 首先定義服務:parentService.ts(服務) import {Injectable} from "@angular/core"@Injectable()export class ParentService {n

React 父子元件之間資料傳遞

一、父元件向子元件傳值 父元件通過屬性的方式向子元件傳值,子元件通過函式回撥的方式向父元件傳值。 案例一: 父元件: <PageTitle title="測試頁面標題" /> 子元件: <div>{this.props.title}&l

angular2父子元件資料傳遞,父元件向子元件傳遞資料

父元件---->子元件 <my-component  [input]="myvalue" ></my-component> 這是單一使用向子元件寫入一組資料, 這樣我們在my-component元件裡面使用@Input() input: an

Vue 父子元件資料傳遞、修改更新

父子元件之間的資料關係,我這邊將情況具體分成下面4種: 父元件修改子元件的data,並實時更新    子元件通過$emit傳遞子元件的資料,this.$data指當前元件的data(return{...})裡的所有資料, this.$emit('data',this.

綜述種類Android元件之間 資料傳遞方法

部落格時間:2012-06-06 18:27 ------------------------------------------- 思路 1通過共享appication做處理 2 先轉換成json,第二個activity再轉換回list3 Parcelable S

Vue父子元件資料傳遞

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>父子元件傳值</title> <script src="./v

angular2父子元件之間傳值

元件結構如下: main.html <div class="row"> <div class="col-sm-2 col-md-2 catalog"> <app-catalog [input]="catalogmsg" (event)="getData(

**Vue父子元件之間傳值*

初學者總結。Vue父子元件之間傳值: 1.父元件到子元件的傳值: a,父元件引入元件並註冊完成: import PersonnelUpdate from “./PersonnelUpdate”; export default { components: { PersonnelUpdate }

Android元件之間 資料傳遞資料

自:http://blog.csdn.net/buaaroid/article/details/49665455  1  基於訊息的通訊機制 Intent--------bundle,extra 用這種簡單的形式,一般而言傳遞一些簡單的型別是比較容易的,如int、st

父子元件資料傳遞

複製程式碼可以直接檢視效果 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"

vue 元件之間資料傳遞

1、props:父元件 -->傳值到子元件 app.vue是父元件 ,其它元件是子元件,把父元件值傳遞給子元件需要使用 =>props 在父元件(App.vue)定義一個屬性(變數)sexVal = '男' 把該值傳遞給 子元件(B.vue),如下: Ap

Vue開發中父子元件之間資料傳遞,有例項程式碼

我在專案過程中的一個小案例: <ImageSelector title="選擇使用者頭像" :multipy='false' :visible.sync='showDialog' :siteId='queryParams.siteId' @cancel-select='closeDia

vue父子元件之間資料傳遞

父元件傳值 在vue中,子元件中預設無法訪問到父元件中data的資料和methods中的方法。 通過屬性繫結(v-bind)的形式 可以把父元件的資料傳遞給子元件 <div id='app'> <!-- com1:子元件-->

Vue父子元件之間的呼叫資料傳遞

Vue父子元件之間的呼叫和資料傳遞 父子元件的定義 兩個檔案的父子元件 父子元件的定義 vue的官網上寫了一些關於父子元件的定義呼叫及值的傳遞。這裡我就不做過多的贅述了。我只說一下我在開發中遇到的一些小問題。 兩個

專案總結之angular中利用inputoutput實現元件之間資料傳遞

目前元件化思想非常盛行,近期在在專案中就用到了input和output的元件,所以就在此總結下來。話不多說,進入正題,先看程式碼。 html: <div class=“shop” [class.actived] ="hide"> <div *ngIf="shopI

Vue2.5仿去哪兒app筆記二——swiper的自動構建 傳送ajax請求 父子元件傳值 兄弟元件資料傳遞

swiper的自動構建 傳送ajax請求 父子元件傳值 兄弟元件間資料傳遞   swiper的自動構建 在首頁的icon頁面下,預設一個頁面中包括8個圖示。而我們希望若當頁面中有9個圖示時,可以左右拖動,形成輪播圖的效果。而且我們希望頁面能夠自動計算和適配圖示與輪播圖,

Angular4父子元件傳遞@Input@Output

Angular提供了@Input和@Output語法來處理元件資料輸入和輸出。 @Input Input輸入屬性,父元件向子元件傳遞資訊。 父元件HTML程式碼: <div> 這是父元件中輸入值:<br><br>

vue實踐之兄弟元件之間資料事件的傳遞

    使用vue進行元件化開發時,經常會遇到需要在業務元件中監聽某個公共元件的資料變化和事件觸發。大致歸類為兩種場景: 業務元件為公共元件的直接父元件(父子關係) *事件傳遞: 子元件定義一個方法,方法中通過this.$emit(‘event’)方式將觸發

餓了麼專案---12、父子元件、兄弟元件之間資料通訊與事件派發(關於購物車新增按鈕的動畫)

html程式碼 生成一個動畫小球的div,並且生成五個小球,五個是為了生成一定數量的小球來作為操作使用,按照小球動畫的速度,一般來說五個也可以保證有足夠的小球數量來執行動畫 動畫的內容分別是外層和內