如何动态设置角度服务的属性?

时间:2019-04-02 06:24:09

标签: angular typescript singleton

我使用的是角度7,并且提供以下服务:

@Injectable({
 providedIn: 'root'
})
export class InMemoryDataService implements InMemoryDbService {

 private variable: Variable[];
 url = 'http://127.0.0.1:4000/api/variable'; //I want make this as parameter when I initialize the service.
 async createDb() {
 if (this.variable.length > 0) {
  return this.variable;
 } else {
  this.variable = await this.getdata();
 }
 }

 async getdata() {
  return await axios.get(this.url).then(res => res.data)
  .catch(err => { console.log(err); return []; });
 }

  constructor() {
  }
}

我想更改配置文件或config.js中的url,并读取此配置文件以更改url路径:

就像我想更改一样:

constructor(private url: string){
}

如何在Angular7中进行设置并在Angular框架中注册此服务变量?

1 个答案:

答案 0 :(得分:0)

如果我理解正确,则希望将数据从组件发送到服务,并将其设置为变量。

您可以通过这种方式将服务注入组件

import { CommonService } from './../common.service';
constructor(public commonService:CommonService ){}

创建函数是您需要参数的服务

public myvar:any;
setData(param){
    this.myvar  = param;
}

并从组件中调用为

this.commonService.setData("parameter");