앵귤러에서 객체를 싱글톤 형식으로 공유하여 사용하는 방법이 있다. 불필요한 객체 사용을 하지 않고, 자주사용하는 객체를 빼서 관리하는 방법이다.
방법은 어렵지 않다.
공통으로 사용 할 서비스를 만들어서 해당 서비스를 컴포넌트 끼리 공유하면 된다.
1. 서비스를 만든다.
2. 메인 모듈 컴포넌트에 서비스를 등록하고 공급한다.
3. 해당 서비스를 받아서 사용한다.
메인 컴포넌트 예제
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppComponent } from './app.component';
import { ShareItemService} from './share-item.service'; //내가만든 서비스
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
FormsModule
],
providers: [ShareItemService], //해당서비스를 공급한다.
bootstrap: [AppComponent]
})
export class AppModule { }
서비스 예제
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root'
})
export class ShareItemService {
array = [1,2,3,4,5]; //공유할 객체
constructor() {
}
//나중에 공유 할 메소드나 Output할 객체를 써도 된다.
}
사용하는 컴포넌트 예제
import { Component,Host,Optional } from '@angular/core';
import {ShareItemService} from './share-item.service';
//사용할 서비스를 임포트 한다.
@Component({
selector: 'rts-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
title = 'singleton-share';
private service : ShareItemService;
private radioArray;
//생성자를 통해 의존성을 주입 받는다. 이때 Host와 Optional 데코레이터를 사용하면 객체가 없는 경우 에러를 방지한다.
constructor(@Host() @Optional() serv : ShareItemService){
this.service = serv;
this.radioArray = this.service.array
};
}
}
반응형
'앵귤러, 리엑트, 뷰 > 앵귤러(Angular)' 카테고리의 다른 글
Angular with firebase (0) | 2019.04.28 |
---|---|
앵귤러 메모리 db서버 (0) | 2019.04.28 |
앵귤러 ViewChildren과 ContentChildren의 차이 (0) | 2019.04.28 |
앵귤러 시작하기 (0) | 2019.04.28 |
앵귤러에 대한 생각 (0) | 2019.04.28 |
* 위 에니메이션은 Html의 캔버스(canvas)기반으로 동작하는 기능 입니다. Html 캔버스 튜토리얼 도 한번 살펴보세요~ :)
* 직접 만든 Html 캔버스 애니메이션 도 한번 살펴보세요~ :)
댓글