Cảm ơn bạn MarkM! Nó hoạt động, nhưng nó đã được khó khăn cho tôi bởi vì tôi có tất cả trong các tập tin khác nhau và trên angular2 cuối cùng bằng cách sử dụng cli góc ... Vì vậy, tôi giải thích nó ở đây:
Trước hết: Bạn cần tạo tệp với lớp bạn muốn chia sẻ với các thành phần khác: data.service.ts và làm cho nó "@Injectable":
import { Injectable } from '@angular/core';
@Injectable()
export class myService {
public sharedData:string;
constructor(){
this.sharedData = "String from myService";
}
setData (data) {
this.sharedData = data;
}
getData() {
return this.sharedData;
}
}
hãy chắc chắn rằng bạn thiết lập các lớp tạo (MyService) trên 'cung cấp' chỉ một lần vào tệp app.module.ts và nhập tệp tiêm: data.service.ts:
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { routing, appRoutingProviders } from './app.routing';
import { AppComponent } from './app.component';
import { AppContent } from './components/content.component';
import { AppInsertContent } from './components/insert.component';
import { myService } from './services/data.service';
@NgModule({
declarations: [
AppComponent,
AppContent,
AppInsertContent,
],
imports: [
BrowserModule,
routing
],
providers: [appRoutingProviders, myService],
bootstrap: [AppComponent]
})
export class AppModule { }
Bất cứ nơi nào bạn muốn sử dụng lớp chia sẻ của bạn sử dụng các nhà xây dựng để tạo ra một đối tượng từ lớp (đối tượng này sẽ là duy nhất cho các thành phần của bạn, nhờ vào sự trang trí @Injectable). Hãy nhớ để import nó trên tất cả các tập tin bạn sử dụng nó ...
Trong trường hợp của tôi quan điểm này đặt ra các dữ liệu của đối tượng với một đầu vào văn bản: input.component.ts
import { Component } from '@angular/core';
import { myService } from '../services/data.service';
@Component({
selector: 'insert-content',
template: `
<input id="textbox" #textbox type="text">
<button (click)="this._myService.setData(textbox.value); SharedData = textbox.value;">SAVE</button>
Object data: {{SharedData}}
<div class="full-button">
<a routerLink="/" routerLinkActive="active">BACK</a>
</div>
`
})
export class AppInsertContent {
SharedData: string;
constructor (private _myService: myService){
console.log(this._myService.getData());
}
}
Và trong quan điểm này tôi chỉ thấy các dữ liệu đã được thiết lập trên đối tượng: content.component.ts
import { Component } from '@angular/core';
import { myService } from '../services/data.service';
@Component({
selector: 'app-content',
template: `
<div style="float:left; clear:both;">
{{_myService.getData()}}
</div>
<div class="full-button">
<a routerLink="/insert" routerLinkActive="active">INSERT</a>
</div>
`
})
export class AppContent {
constructor (private _myService: myService){
console.log(this._myService.getData());
}
}
tôi hy vọng thông tin này rất hữu ích!
Bạn có thể sử dụng dịch vụ, một cách phổ biến để chia sẻ dữ liệu giữa các thành phần. –
Cảm ơn bạn rất nhiều! –