角度6:我们如何向全局名称空间添加函数?

时间:2020-02-23 11:23:27

标签: javascript html css angular typescript

我的要求是我需要在Angular 6项目中向全局名称空间添加函数。然后应该可以从浏览器控制台调用此功能。

2 个答案:

答案 0 :(得分:2)

您始终可以访问窗口对象。

只要将功能添加到窗口对象的某个位置,该位置在应用程序加载时就会运行,例如应用程序模块,那么您的功能就会添加到窗口对象。

my-function.ts

export function myFunction() {
  console.log('Hello, World!');
}

app.module.ts

import { myFunction } from './my-function';

@NgModule()
export class AppModule { }

window['myFunction'] = myFunction;

然后从控制台中运行window['myFunction']();

答案 1 :(得分:0)

https://stackblitz.com/edit/angular-ngref-access-problem

这可能不是最好的方法,但是您可以通过以下引导方法来访问angular

platformBrowserDynamic().bootstrapModule(AppModule).then(ref => {
  // Ensure Angular destroys itself on hot reloads.
  if (window['ngRef']) {
    window['ngRef'].destroy();
  }
  window['ngRef'] = ref;

  // Otherwise, log the boot error
}).catch(err => console.error(err));

然后可以从浏览器控制台中调用这样的东西

ngRef._providers[19].sayHelloWorld()

test.service.ts

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

@Injectable({ providedIn: "root" })
export class TestService {
  sayHelloWorld() {
    console.log("Hello World");
  }
}