250x250
반응형
- Today
- Total
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 산업기능요원 훈련소
- 오블완
- sessionStorage
- NextJS
- 공익 훈련소
- react toast
- 훈련소
- The above error occurred in the
- localStorage
- 자바스크립트 순수함수
- 사회복무요원 훈련소
- 리액트 라이프사이클
- svgr
- useformstatus
- 자바스크립트
- angular
- 비동기 병렬처리
- resolved to branch.
- 오라클클라우드
- 리액트
- react life sycle
- next.js toast
- styled-component
- 훈련소 후기
- react
- 리액트 알림
- no-use-before-define
- useRouter
- query param
- server action
Archives
아 그거 뭐였지
[Angular] Input , Output 데코레이터 본문
728x90
반응형
Q. 부모 컴포넌트에서 자식 컴포넌트로 데이터를 주고싶다.
이때 사용하면 되는것이 Input, Output 데코레이터이다.
본인은 자식 컴포넌트를 팝업창처럼 띄우고 자식컴포넌트에 데이터를 전달한뒤 종료했을때 종료했다는 사인을 부모 컴포넌트로 받고 팝업창을 닫을때 사용했었다. 바로 사용법을 알아보자.
@Input
- 부모컴포넌트에서 자식컴포넌트로 데이터를 전송할때 사용한다.
- 자식컴포넌트에서 @Input() 데코레이터를 통해서 데이터를 전송받는다. 대문자로 시작함에 유의하자.
- 헤더에 타이틀이 바뀔때 @Input() 데코레이터를 통해서 컴포넌트별로 타이틀값만 넣어주는 방식으로 구현할수도있다.
코드 예제를 살펴보자 부모로부터 "insertData"라는 값을 자식으로 전달하여 출력하는 예제이다.
// app-child-component.ts
import {Input} from '@angular/core';
export class ChildComponent implements OnInit {
//부모로 부터 데이터를 받을 변수 이름
@Input() data:any
}
// app-parent-component.html
// 자식 컴포넌트에 있는 data 변수에
// 부모 컴포넌트의 parentData데이터를 넣어준다.
<app-child [data]= "parentData"></app-child>
// app-parent-component.ts
export class ChildComponent implements OnInit {
parentData = "insertData";
}
// app-child-component.html
<span>{{data}}</span> //출력결과는 insertData
{{}}는 Angular에서 Html상에서 변수를 사용하고싶을때 {{}}안에 변수명을 입력하면된다.
@Output
- 자식컴포넌트에서 부모컴포넌트로 데이터를 전송할때 사용한다.
- 자식 컴포넌트에서 @Output 데코레이터와 EventEmitter, emit 메소드를 이용하여 데이터를 전송한다
- 부모 컴포넌트에서는 $event메소드로 값을 전달 받는다.
//app-child-component.ts
import { Output, EventEmitter } from '@angular/core';
export class ChildComponent implements OnInit {
constructor(){ //생성자 (프로그램이 실행될때 한번 실행된다.)
this.sendData(); //sendData 함수 실행
}
@Output() postData = new EventEmitter; //부모로 보낼 변수 이름
data = "Post Data !!"
sendData(){
postData.emit(this.data) // emit메소드로 데이터를 보낸다.
}
}
//app-parent-component.html
// 자식컴포넌트에서 전송한 postData를 $event메소드로 전달 받는다.
<app-child-component (postData)="showData($event)"></app-child-component>
//app-parent-component.ts
showData(data){
console.log(data) // 출력되는 데이터는 Post Data !! 이다.
}
Input을 쓴다고 꼭 Output을 써야하는것은아니다. 상황에 맞게 적절하게 사용하도록하자.
728x90
반응형
'Front-End' 카테고리의 다른 글
[React] useState, onClick 데이터 상태 변화 (0) | 2022.03.23 |
---|---|
[Angular] ngModel , 데이터 양방향 바인딩 (0) | 2022.03.21 |
[JavaScript] async함수 활용 팁 (0) | 2022.03.09 |
[JavaScript] location.href 사용하기 (0) | 2022.03.09 |
[JavaScript] 자바스크립트 부모창에서 자식창 제어하기 ex)결제창 제어 (0) | 2022.01.22 |
Comments