如何更改service.ts angular中的变量值?

时间:2018-07-04 01:36:32

标签: angular

作为一名程序员和角度框架,我还很新,所以问题很明显。

我有一个使用firebase运行CRUD的service.ts文件,并且在Firebase内部,我正在执行一个过滤器,该过滤器取决于变量“ this.machine ”的值。根据计算机名称,将执行过滤器并仅显示该计算机中的数据。

这是代码的一部分:

@Injectable()
export class CrudCadastroService {
  public machineList: Machine[];
  cadastroList: AngularFireList<any>;
  selectedCadastro: CadastroModal = new CadastroModal();
  machine: string;

  constructor(
    private firebase :AngularFireDatabase
   ) { }

  getData(){
    this.cadastroList = this.firebase.list('cadastros', ref => ref.orderByChild('machine').equalTo(**this.machine**));  
    return this.cadastroList;
  }

我还有另一个从Firebase数据库推送列表的service.ts,并且我正在component.ts中使用

在此文件componete.ts中,我获得了此变量的值。

  changeShape(shape) {
   //Get name machine value
   //I want to use this variable **machine** into service.ts
    let machine= shape.value;
    console.log(machine) //name of machine
  }

这是我的html

<div class="form-group">
  <select name="machine" #machine="ngModel [(ngModel)]="cadastroService.selectedCadastro.machine"
  (change)="changeShape($event.target)" >
    <option *ngFor="let machine of machineList"
    >{{machine.name}}</option>
  </select>
</div>

我的问题是,我可以更改service.ts文件中 this.machine 的值吗?有没有其他方法可以执行此逻辑?

2 个答案:

答案 0 :(得分:1)

您可以在service.ts和component.ts中创建setter方法,然后再调用以获取该计算机的列表,将setter方法调用为计算机值。

答案 1 :(得分:0)

在打字稿中,访问器默认情况下是公共的,因此,如果将CrudCadastroService作为“ crudCastroService”注入到组件中,则只需更改

即可在component.ts中更改其值。
this.crudCastroService.machine = 'newName';