저는 Angular2를 처음 사용하고 있으며 학습하여 학습하고 있습니다. 지금 당장 나는 상위 구성 요소, 두 개의 하위 구성 요소 및 데이터베이스 서비스로 여러 뷰 중 하나를 빌드하는 데 성공했습니다. 이제 각각의 부모 - 자식 구성 요소를 사용하여 다른보기를 구현하려고합니다.Angular2 : 데이터 계층에 대한 유용한 정보
응용 프로그램은 다른 구성 요소 내에서 추가/업데이트/삭제할 수있는 동일한 데이터 집합을 사용해야하므로 응용 프로그램의 모든 구성 요소에서 직접 쿼리 할 수있는 별도의 데이터 계층이 필요합니다. 더구나 - 서비스의 동일한 인스턴스가 필요하므로 어디서나 중간 데이터를 사용할 수 있으며 불필요한 데이터베이스 이동을 피할 수 있습니다. Angular2에서 이러한 클래스를 정의하고 사용하는 가장 좋은 방법은 무엇입니까?
업데이트 Q : 나는 모든 응용 프로그램을 통해 데이터 계층의 동일한 인스턴스의 변수에 직접 액세스 할 수 그래서 지금, 구성 요소 내에서 변수를 처리하는 가장 좋은 방법은 무엇입니까?
a) 제가
this.locations = this.datalayer.locations;
this.selectedLocation;
updateLocation(id) {
this.selectedLocation = id;
this.datalayer.setSelectedLocation(id);
}
getSelectedLocation() {
return this.selectedLocation;
}
또는 B와 같이 동일한 데이터 영역 변수 (즉,로드 얻고 명시 적으로 설정)의 복사본이다 지방 성분 변수 작동 함) 데이터 영역 변수를 독점적으로 사용하고, 반복하고, 구성 요소 내에서 가져 와서 설정해야합니까?
updateLocation(id) {
this.datalayer.selectedLocation = id;
}
getSelectedLocation() {
return this.datalayer.selectedLocation;
}
또는 어쩌면 옵션이 있습니까?
이 명확히 : 나는 app.module에서 (@Injectable 임) db.service를 가져올 것이다, 공급자 배열을 포함하고 그냥 다시 가져 구성 요소 수준의 공급자 배열에 포함시키지 않고 필요한 모든 다른 구성 요소, 그렇지? – pop
정확히. 그런 다음 각 구성 요소의'constructor()'에 추가하십시오. –
'@Injectable()'과 관련이 없습니다. 데코 레이팅 된 클래스에 의존성을 주입하기위한 것이지 주입 가능한 것을 만들지는 않습니다. 무언가가 생성자 인자를 가지지 않는다면'Injectable()'으로 꾸밀 필요가 없습니다. –