通过 angular 2 中的多个组件访问服务的 属性?
accessing service's property through multiple components in angular 2?
我有 属性 在组件 1 中计算,我正在使用服务访问和存储 属性 并从另一个组件访问 属性 值,但是该值是没有反映在另一个组件中。我做错了什么
组件 1
import { Component, AfterViewInit } from '@angular/core';
import { CrosspropertiesService } from "../services/Crossproperties.service";
@Component({
selector: 'app-timer',
templateUrl: './timer.component.html',
styleUrls: ['./timer.component.css'],
providers:[CrosspropertiesService]
})
export class TimerComponent implements AfterViewInit {
constructor(private crossproperties: CrosspropertiesService) { }
public projectheader: number = 959 ;//lets assume
ngAfterViewInit() {
this.projectheader = this.crossproperties.projectHeaderWidth;
console.log(this.crossproperties.projectHeaderWidth);// console has value 959
}
}
}
组件 2
import { Component, AfterViewInit, Input } from '@angular/core';
import { CrosspropertiesService } from "../../services/Crossproperties.service";
@Component({
selector: 'app-projects',
templateUrl: './projects.component.html',
styleUrls: ['./projects.component.css'],
providers:[CrosspropertiesService]
})
export class ProjectsComponent implements AfterViewInit {
constructor(private crossproperties: CrosspropertiesService ) { }
public headerWidth :number;
ngAfterViewInit() {
this.headerWidth= this.crossproperties.projectHeaderWidth;
console.log(this.headerWidth); //console has value undefined
}
和服务文件
import { Injectable } from '@angular/core';
@Injectable()
export class CrosspropertiesService {
public projectHeaderWidth:number;
constructor() { }
}
如果将服务添加到组件上的 providers
数组,每个组件都会获得自己的实例服务。
从组件中删除 providers
属性 并将其添加到父组件或 NgModule
@NgModule({
...
providers: [CrosspropertiesService]
})
export class AppModule {}
我有 属性 在组件 1 中计算,我正在使用服务访问和存储 属性 并从另一个组件访问 属性 值,但是该值是没有反映在另一个组件中。我做错了什么
组件 1
import { Component, AfterViewInit } from '@angular/core';
import { CrosspropertiesService } from "../services/Crossproperties.service";
@Component({
selector: 'app-timer',
templateUrl: './timer.component.html',
styleUrls: ['./timer.component.css'],
providers:[CrosspropertiesService]
})
export class TimerComponent implements AfterViewInit {
constructor(private crossproperties: CrosspropertiesService) { }
public projectheader: number = 959 ;//lets assume
ngAfterViewInit() {
this.projectheader = this.crossproperties.projectHeaderWidth;
console.log(this.crossproperties.projectHeaderWidth);// console has value 959
}
}
}
组件 2
import { Component, AfterViewInit, Input } from '@angular/core';
import { CrosspropertiesService } from "../../services/Crossproperties.service";
@Component({
selector: 'app-projects',
templateUrl: './projects.component.html',
styleUrls: ['./projects.component.css'],
providers:[CrosspropertiesService]
})
export class ProjectsComponent implements AfterViewInit {
constructor(private crossproperties: CrosspropertiesService ) { }
public headerWidth :number;
ngAfterViewInit() {
this.headerWidth= this.crossproperties.projectHeaderWidth;
console.log(this.headerWidth); //console has value undefined
}
和服务文件
import { Injectable } from '@angular/core';
@Injectable()
export class CrosspropertiesService {
public projectHeaderWidth:number;
constructor() { }
}
如果将服务添加到组件上的 providers
数组,每个组件都会获得自己的实例服务。
从组件中删除 providers
属性 并将其添加到父组件或 NgModule
@NgModule({
...
providers: [CrosspropertiesService]
})
export class AppModule {}