为同一服务的每个组件提供不同的值



我不确定我是否误解了服务、注入器和提供者的概念,但我认为我可以做以下事情:

我有一个为我验证数字的服务(调用一个方法,传递一个应该验证的数字…(。我想根据我想传递给服务的一些信息来调整验证。比如:数字的最大数量是多少。是否允许负值。我知道我可以将这些信息作为参数传递到验证方法中,但我在想,是否还有更全局的东西?

我读过关于Injectors的文章,并设法注入了这些参数,如下所示:

constructor(@Inject('negativeValues') @Optional() private negativeValues,
@Inject('maxDigits') @Optional() private maxDigits) {}

当在我的模块中添加提供者时,我的组件正在调用此服务,它确实起作用。但是,如果同一模块中的另一个组件需要提供不同的信息,该怎么办?

最好的方法是,将其拆分为更小的模块(我不喜欢(,或者有机会为每个组件提供这些值(或者至少覆盖现有的值——尽管将这些提供程序添加到组件中对我来说不起作用(。

或者有没有更好的方法向服务提供值,而不将它们传递到方法中?

Julia,一个服务对所有应用程序都是唯一的(好吧,事实并非如此,您使用"provideIn"为每个模块或每个应用程序创建一个服务(

所以我想你有一个服务和一些功能。您将参数传递给功能服务

import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root', //<--here indicate if the service is unique
//for the application or if is for a module
})
export class DataService {
constructor() { }
formatNumber(negativeValues:boolean,negativeValues:number,maxDigits:number)
{
....
return result
}
}

你从这样的组件调用

constructor(dataService:DataService){} //<--inject in constructor
//in any time
const result=this.dataService.formatNumber(true,2,3)

注意:您还可以在.ts中具有不同的功能(使用"导出"表示可以导出(

export function formatNumber(negativeValues:boolean,negativeValues:number,maxDigits:number)
{
....
return result
}
}

在组件中

import { formatNumber} from "./myfunction"; //<--the file.ts where ou has the functions
//and in any where
const result=formatNumber(true,2,3)

相关内容

  • 没有找到相关文章

最新更新