angular2在组件,getter和setter之间共享数据

时间:2017-10-29 23:05:35

标签: javascript angular typescript getter-setter

我在这里有一个与此人相同的问题:

Angular 2 Setter and Getter

解决方案提供的思想不足以让我的项目工作,所以我会用更多细节来解释我的情况,看看你们是否可以帮助我!

我有一个服务dataBase.service.ts:

import {Injectable} from "@angular/core";

@Injectable()
export class dataBaseService{

    serviceData: string;

    get data():string{
        return this.serviceData;
    }

    set data(value:string){
        this.serviceData = value;
    }
}

这项服务显然已作为提供商添加到app.module.ts ..

在我的组件A上我有:

import { Component, OnInit } from '@angular/core';
import {dataBaseService} from "../dataBase.service";




@Component({
  selector: 'app-tipo',
  templateUrl: './tipo.component.html',
  styleUrls: ['./tipo.component.scss'],
    providers: [dataBaseService]
})
export class A implements OnInit {


  constructor( public dataService:dataBaseService) {
      this.dataService.serviceData = 'hello';
  }



  ngOnInit() {
      console.log(this.dataService.serviceData);
  }

}

直到这里一切都很好。如果我在控制台上显示:

console.log(this.dataService.serviceData);它按预期返回“你好”

但在我的下一个组件上,当我再次打印相同的数据时,它显示未完成:

import { Component, OnInit } from '@angular/core';
import {dataBaseService} from "../dataBase.service";

@Component({
  selector: 'app-modelo',
  templateUrl: './modelo.component.html',
  styleUrls: ['./modelo.component.scss'],
    providers: [dataBaseService]
})
export class ModeloComponent implements OnInit {



  ngOnInit() {
      console.log(this.dataService.serviceData);      
  }
    constructor(public dataService: dataBaseService) {

    }

}

console.log(this.dataService.serviceData);它返回“未定义”.. 那么如何保存我在第一个组件上放置的数据并且能够在另一个组件上显示它?我错过了什么?

更新:

有些像我这样的人没有找到像堆栈这样的另一个问题的答案,那是因为不是单独添加提供者而是必须全局添加(在module.ts上)!!!!!!! !!!!!

1 个答案:

答案 0 :(得分:1)

正如您所说,您已经在模块级别添加了提供程序,请尝试从组件中注释提供程序声明。