如何在角度6的其他服务中调用自定义服务

时间:2019-08-06 16:18:16

标签: javascript jquery angular angular6

如何在角度6的另一个自定义服务中调用自定义服务

我创建了两个服务user.services.ts和counter.services.ts

正在获取错误:无法调用类型缺少调用签名的表达式。类型“号码”没有兼容的呼叫签名

即使尝试在app.modules providers数组中添加服务名称,但同样会出错

user.services.ts

import { Injectable } from '@angular/core';
import { CounterService } from './counter.service';

@Injectable({
  providedIn: 'root',   
})
export class UserService {

activeUsers = ['Max', 'Anna'];
inactiveUsers = ['Chris', 'Manu'];

constructor(private counterSer: CounterService) { }

 setUserActive(id: number) {
  this.activeUsers.push(this.inactiveUsers[id]);
  this.inactiveUsers.splice(id, 1);
  this.counterSer.activeToInactiveCounter();
}

 setUserInactive(id: number) {
  this.inactiveUsers.push(this.activeUsers[id]);
  this.activeUsers.splice(id, 1);
 }
}

Counter.services.ts

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

@Injectable({
   providedIn: 'root'
})
export class CounterService {

 constructor() { }

 activeToInactiveCounter = 0;
 inactiveToActiveCounter = 0;

 incrementActiveToInactive() {
   this.activeToInactiveCounter++;
   console.log(this.activeToInactiveCounter);
 }

 incrementInactiveToActive() {
   this.inactiveToActiveCounter++;
   console.log(this.inactiveToActiveCounter);
 }
}

1 个答案:

答案 0 :(得分:4)

您正在将属性activeToInactiveCounter称为方法。我认为您正在尝试致电incrementActiveToInactive()

因此,您应该拥有:this.counterSer.activeToInactiveCounter();

,而不是setUserActive中的this.counterSer.incrementActiveToInactive();
setUserActive(id: number) {
    this.activeUsers.push(this.inactiveUsers[id]);
    this.inactiveUsers.splice(id, 1);
    this.counterSer.incrementActiveToInactive();
}
相关问题