Я пытаюсь открыть новую страницу при запуске страницы, но все время получаю
Ссылка Ошибка: окно не определено.
Я только недавно начал работать с TypeScript и Angular4, поэтому я не уверен, к какому из двух эта проблема действительно относится.
export class HomeComponent implements OnInit {
testCall: Window;
constructor() {
this.testCall = new Window();
this.testCall.open(
"https://static.pexels.com/photos/104827/cat-pet-animal-domestic-104827.jpeg");
}
ngOnInit(): void {
console.log("function read");
window.open("https://static.pexels.com/photos/104827/cat-pet-animal-domestic-104827.jpeg");
}
Даже если я использую this.testCall.open
внутри OnInit()
, я получу только справочную ошибку, но в методе open
.
Я знаю, что при открытии первой страницы открывается простая страница, но прошла уже неделя, и я действительно понятия не имею, как это сделать в настройке typescript / angular4.
3 ответа
Удалить эту строку
this.testCall = new Window();
window
- это глобальная переменная в JS, просто вызов window.open('url')
должен открыть новое окно.
Вы пытались объявить объект window
в файле, содержащем HomeComponent ?. если нет, попробуйте объявить его как;
declare var window: any;
В верхней части файла (после импорта).
TypeScript не знает об окне, поскольку мы не предоставляем никакой информации об этом. В этом случае мы можем объявить их, чтобы сообщить компилятору машинописного текста, что ссылка window
в глобальном пространстве имен не возникла из файла машинописного текста.
Дополнительные сведения об этом сценарии см. здесь < / а>
Хорошо, по-видимому, window не существует на сервере, поэтому ngOnInit () и constructor () выдают ошибку, когда я пытаюсь поместить туда "window.open"
import { Component, PLATFORM_ID, Inject, OnInit } from '@angular/core';
import { isPlatformBrowser } from '@angular/common';
export class HomeComponent {
submitted: boolean = false;
constructor(@Inject(PLATFORM_ID) private platformId: Object) {
}
ngOnInit() {
if (isPlatformBrowser(this.platformId)) {
window.open("URL");
}
}
}
Это отлично сработало для меня.
Похожие вопросы
Новые вопросы
angular
Вопросы по Angular (не путать с AngularJS), веб-фреймворку от Google. Используйте этот тег для угловых вопросов, которые не относятся к конкретной версии. Для более старой веб-платформы AngularJS (1.x) используйте тег angularjs.