我想打开一个新的窗口弹出窗口,一旦在新的弹出窗口中加载了URL,我想关闭它。
这是我的组件
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit{
title = 'app';
ngOnInit():void{
var popup=window.open('https://www.w3schools.com','newwindow','width=300,height=200');
popup.onload=function(){
alert("Hello");
window.close();
}
}
}
在上面的代码中
popup.onload=function(){
alert("Hello");
window.close();
}
无法正常工作,没有警报,窗户也没有关闭。 但如果我只是做
popup.alert("Hello");
popup.close();
它起作用了。但是我希望在整个URL加载时关闭窗口,即onload()函数。
请提供有关此问题的指示。
提前致谢!
答案 0 :(得分:1)
如果可以的话,为什么要使用onLoad使用ngAfterViewInit()。 “在Angular初始化组件的视图和子视图/指令所在的视图后响应。”
popup: any;
ngOnInit():void{
this.popup=window.open('https://www.w3schools.com','newwindow','width=300,height=200');
}
ngAfterViewInit() {
this.popup.close();
}
导入ngAfterViewInit并尝试这是否适合您。
答案 1 :(得分:0)
angular 2 app在不同的环境中运行,如网络,移动设备,服务器端渲染,因此Windows对象可能在那里可用,也可能不在那里。所以这不是直接使用windows对象的最佳方法,而是提供返回windows对象的服务,并根据环境简单地替换服务实现
@Injectable()
export class WindowRef {
constructor() {}
getNativeWindow() {
return window;
}
}
答案 2 :(得分:0)
问题是您使用了“ alert(” Hello“);”并且没有引用弹出窗口。应该是
popup.onload=function(){
alert("Hello");
window.close();
}