更新Angular 4中的服务数据

更新Angular 4中的服务数据,angular,angular-services,Angular,Angular Services,服务数据对象在多个组件中更新,现在在第一个init组件中如何使用对象的最后更新值。在该组件中,当我在ngOnInit中初始化对象时,它没有最后一个值 那么,如何触发对象的最后更改并将其放入组件中呢 在职: 标题:字符串 在第一部分: appTitle:string; 恩戈尼尼特(){ this.appTitle=this.titleService.title;//我不确定您的问题是什么,但如果您的服务中有一些数据需要与其他组件共享,则可以执行以下操作 Angular 2/4内置了数据绑定,这意味

服务数据对象在多个组件中更新,现在在第一个init组件中如何使用对象的最后更新值。在该组件中,当我在ngOnInit中初始化对象时,它没有最后一个值

那么,如何触发对象的最后更改并将其放入组件中呢

在职:
标题:字符串

在第一部分:
appTitle:string;
恩戈尼尼特(){

this.appTitle=this.titleService.title;//我不确定您的问题是什么,但如果您的服务中有一些数据需要与其他组件共享,则可以执行以下操作

Angular 2/4内置了数据绑定,这意味着如果您将组件中的服务作为公共服务使用,您可以直接操作对象,所有其他组件都将具有更新版本

e、 g.在您的组件中

constructor(public myService:MyService){
 myService.sharedData = {someAttr:"Updated"}; // can also be used directly in your view.
}
为您服务:

public sharedData:any = {someAttr:"Hello"};
 constructor() {
}
在您的html中:

<body>{{myService.sharedData}}</body> <!--Will display your shared data object-->
{{myService.sharedData}

我不确定您的问题是什么,但如果您的服务中有一些数据需要与其他组件共享,则可以执行以下操作

Angular 2/4内置了数据绑定,这意味着如果您将组件中的服务作为公共服务使用,您可以直接操作对象,所有其他组件都将具有更新版本

e、 g.在您的组件中

constructor(public myService:MyService){
 myService.sharedData = {someAttr:"Updated"}; // can also be used directly in your view.
}
为您服务:

public sharedData:any = {someAttr:"Hello"};
 constructor() {
}
在您的html中:

<body>{{myService.sharedData}}</body> <!--Will display your shared data object-->
{{myService.sharedData}

您可以定义一个getter:

get appTitle()
{
    return this.titleService.title
}

现在,当您调用
this.appTitle
时,您将从服务中获得新的标题。

您可以定义一个getter:

get appTitle()
{
    return this.titleService.title
}


现在,当您调用
this.appTitle
时,您将从服务中获得新的标题。

看看这个共享服务是您所追求的,您需要在服务中使用
行为主题来更新组件使用观察对象和订阅在init上等待您的组件,直到他获取最新版本的对象。Sh如果你需要一个代码示例,请提供一些你自己的代码,我将尝试添加一个解决方案。尝试解释你能解释更多关于你的问题吗?如果你把你的代码附加到问题上,我们可以帮助你更多:)看看这个共享服务是你想要的,你需要使用
行为主题t
在服务中更新组件使用可观察对象和订阅在init上等待您的组件,直到他获取对象的最新版本。应该是直截了当的。如果您需要代码示例,请提供一些您自己的代码,我将尝试添加解决方案。尝试解释您可以解释更多关于您的问题吗em?如果您将您的代码附加到问题,我们可以为您提供更多帮助:)是的,我已在app.module.ts中将我的组件注册为public,但通过此代码流,我在第一个组件中的数据不会随着最后一次更改而更新,“Login”,ngOnInit位于第二个组件之前,我无法更新第二个组件中的值。请勿使用
{{appTitle}
在html中,并从组件中删除本地
appTitle:string
。相反,在html中,编写
{{titleService.title}
。你可以直接使用变量,而不是在组件中声明本地变量。好伙伴,这就是我想要的。非常感谢,@John。如果你有时间,你能告诉我如何更新我的本地组件变量吗。我很高兴你找到了它。如果你需要一个与你的服务同步的本地变量,那么你需要一个object(如
var myVar:any={myString:“}
),然后它必须引用(指向)您服务中的对象。然后您将始终在引用它的所有组件中处理同一对象。希望这是可以理解的。因此在您的组件中
myObject=myService.myObject
,在html中:
{myObject}
。变量必须是对象,而不是原语(如字符串或数字)是的,我已经在app.module.ts中将我的组件注册为public,但是使用此代码流,我在第一个组件中的数据不会随着最后一次更改“Login”而更新,ngOnInit位于第二个组件之前,我无法更新在第二个组件中生成的值。不要使用
{appTitle}
在html中,并从组件中删除本地
appTitle:string
。相反,在html中编写
{{{titleService.title}
。你可以直接使用变量,而不是在组件中声明本地变量。好伙伴,这就是我想要的。非常感谢,@John。如果你有时间,你能告诉我如何更新我的本地组件变量吗。我很高兴你找到了它。如果你需要一个与你的服务同步的本地变量,那么你需要一个object(如
var myVar:any={myString:“}
),然后它必须引用(指向)您服务中的对象。然后您将始终在引用它的所有组件中处理同一对象。希望这是可以理解的。因此在您的组件中
myObject=myService.myObject
,在html中:
{myObject}
。变量必须是对象,而不是原语(如字符串或数字)我尝试getter,但问题是第一个组件ngOnInit发生在更新之前,我无法通过此事件获取。是否要按顺序加载组件?换句话说,是否总是在第一个组件之后加载第二个组件?是的,第一个组件用于面包屑,第二个组件位于另一个文件夹中,用于登录。使用getter,在您的组件中第一次更改之后,它将检查新值。可能您的第一个组件中没有更改/事件,嗯?如果是这样,您可能需要强制angular重新检查值构造函数(受保护的_changeDetectorRef:changeDetectorRef){}markForCheck():void{this._changeDetectorRef.markForCheck();}我尝试getter,但问题是第一个组件在更新之前出现,并且我无法通过此事件获取它。要吗