无法使用服务将数据从一个角度组件传递到另一个角度组件。下面是服务代码:无法使用角度服务在两个角度4组件之间传递数据
import { Injectable } from '@angular/core';
@Injectable()
export class DataService {
public serviceData: string;
}
下面是部分home
:
import {Component, OnInit, Input} from '@angular/core';
import {Router} from "@angular/router";
import { DataService } from '../common/common.service';
@Component({
selector: 'app-home',
templateUrl: './home.component.html',
styleUrls: ['./home.component.css']
})
export class HomeComponent {
constructor(public router: Router, public commonService: DataService) {
this.commonService.serviceData = 'Message from Home Component to App Component!';
this.router.navigate(["overview"]);
}
}
这里是概述部分:
import {Component, OnInit, Input} from '@angular/core';
import { DataService } from '../common/common.service';
import { Subscription } from 'rxjs/Subscription';
@Component({
selector: 'app-overview',
templateUrl: './overview.component.html',
styleUrls: ['./overview.component.css']
})
export class OverviewComponent {
constructor(public messageService: DataService) {
alert(this.messageService.serviceData);
}
}
在OverviewComponent
警报总是显示undefined
。
有一个在[DOC]一堆例子(https://stackoverflow.com/documentation/angular/10836/sharing-data-among-components#t=201708021351339613133) – Nehal
的可能的复制[如何分享组件之间的数据使用正确的服务?](https://stackoverflow.com/questions/40468172/how-to-share-data-between-components-using-a-service-properly) –
服务是为了单例,这是一个类的单个实例。由于它是单身人士,它可以保留一组任何数据并跨组件共享。为了确保一个服务是一个单身人士,它只能一次注册。您通过将它添加到两个组件的[[providers]数组中来注册它两次。推荐的方法是注册它与应用程序模块,如下所示:https://blogs.msmvps.com/deborahk/build-a-simple-angular-service-to-share-data/ – DeborahK