我的要求是我需要在Angular 6项目中向全局名称空间添加函数。然后应该可以从浏览器控制台调用此功能。
答案 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");
}
}