以所有函数均可访问的方式声明角度变量

时间:2019-04-11 11:55:03

标签: javascript angular typescript electron

我一次又一次地创建窗口变量,我怎么只能声明一次呢? 我尝试将其添加到构造函数中,但这没用。

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();
  }

}

5 个答案:

答案 0 :(得分:1)

在组件中定义一个新属性,并在构造函数中对其进行一次分配(如果实现了functions = {} for name, value in Example.__dict__.items(): if callable(value): functions[name] = value print(functions) 生命周期挂钩,则甚至可以分配给{'func1': <function Example.func1 at 0x7f58c24c26a8>, 'func2': <function Example.func2 at 0x7f58c24c2620>} ):

ngOnInit

答案 1 :(得分:1)

private window: any; constructor(private _ES: ElectronService) { this.window = this._ES.remote.getCurrentWindow(); } 变量添加到组件,并在from bs4 import BeautifulSoup as bs html = ''' <div itemprop="description"> <p>Chars : </br>- test1 </br>- test2 </br>- test3 </p> </div> ''' soup = bs(html, 'lxml') data = [item.text.strip().replace('\n',' ') for item in soup.select('div[itemprop=description]')] print(data) 钩子中对其进行设置:

window

答案 2 :(得分:1)

只需使用全局变量

    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();
  }

   }

您也可以在ngOnInit函数中初始化窗口

答案 3 :(得分:1)

您可以通过此答案解决您的问题。因此,这可能是一个重复的问题:

Angular Globals variables

答案 4 :(得分:1)

只需创建一个共享的单例服务

@Injectable()
export class GlobalService {

  private _data = {value:0};

  getData(){
    return this._data; // get ref of the data object 
  }
}
  

请注意,每次您请求数据时,您都会得到一个相同的对象,因此   除非您没有必要在组件主体中创建一个属性   想要在模板中显示对象

共享或单例服务只是添加到 AppModule root 模块提供者列表

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

如果要从数据对象中呈现任何数据,则需要在组件主体a,b中创建一个属性来保存该对象的引用。

export class AComponent implements OnInit {

  data;
  constructor(public _g:GlobalService) { }

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

}

如果您只想更改数据c组件

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; 
  }

}
  

在全局服务getData中,对_data对象 不是每次都新建一个对象

返回引用

stackblitz demo