2
votes

déclarer la variable angulaire de manière à ce que toutes les fonctions y aient accès

Je crée la variable window encore et encore comment puis-je la déclarer une seule fois? J'ai essayé de l'ajouter au constructeur mais cela n'a pas fonctionné.

import { Component } from '@angular/core';
import { ElectronService } from 'ngx-electron';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.sass']
})
export class AppComponent {
  title = 'ae-test';

  constructor(
    private _ES: ElectronService, 
    ) {}

  minWindow() {
    const window = this._ES.remote.getCurrentWindow(); 
    window.minimize();
  }
  fullscreenWindow() {
    const window = this._ES.remote.getCurrentWindow()
    if (window.isFullScreen() == true) {
      window.setFullScreen(false);
    } else {
      window.setFullScreen(true);
    }
  }
  closeWindow() {
    const window = this._ES.remote.getCurrentWindow();
    window.minimize();
  }

}


1 commentaires

liez-le simplement à une propriété de classe et initialisez-le dans le constructeur.


5 Réponses :


1
votes

Définissez une nouvelle propriété dans votre composant et attribuez-la une fois dans votre constructeur (ou mieux ngOnInit si vous implémentez le hook de cycle de vie OnInit ):

private window: any;

constructor(private _ES: ElectronService) {
  this.window = this._ES.remote.getCurrentWindow();
}


0 commentaires

1
votes

ajoutez la variable window au composant et définissez-la dans le hook ngOnInit :

this.window = this._ES.remote.getCurrentWindow(); 


0 commentaires

1
votes

utilisez simplement une variable globale

    import { Component } from '@angular/core';
import { ElectronService } from 'ngx-electron';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.sass']
})
export class AppComponent {
  title = 'ae-test';
  window = null;
  constructor(
    private _ES: ElectronService, 
    ) {
  this.window = this._ES.remote.getCurrentWindow(); 
}

  minWindow() {
    this.window.minimize();
  }
  fullscreenWindow() {
    if (this.window.isFullScreen() == true) {
      this.window.setFullScreen(false);
    } else {
      this.window.setFullScreen(true);
    }
  }
  closeWindow() {
    this.window.minimize();
  }

   }

vous pouvez également initialiser la fenêtre dans la fonction ngOnInit


0 commentaires

1
votes

Vous pouvez résoudre votre problème avec cette réponse. C'est donc une question répétée possible:

Variables globales angulaires


0 commentaires

1
votes

Créez simplement un service singleton partagé

export class CComponent  {

 data;
  constructor(public _g:GlobalService) { }

  reset() {
    const data = this._g.getData(); // 🌟
    data.value = 0;
  }

  inc(){
    const data = this._g.getData(); // 🌟
    data.value +=10; 
  }

}

remarquez que chaque fois que vous demandez des données, vous obtenez le même objet. il est nécessaire de créer une propriété dans le corps du composant sauf si vous souhaitez afficher l'objet dans le modèle

Le service partagé ou singleton n'est qu'un service ajouté à la liste des fournisseurs de modules AppModule ou root

export class AComponent implements OnInit {

  data;
  constructor(public _g:GlobalService) { }

  ngOnInit() {
    this.data = this._g.getData()
  }

}

si vous souhaitez rendre des données à partir de l'objet de données, vous devez créer une propriété dans le corps du composant a, b pour contenir une référence de l'objet.

@NgModule({
  ...
  providers: [GlobalService]
})
export class AppModule { }


0 commentaires