Я пытаюсь открыть новую страницу при запуске страницы, но все время получаю

Ссылка Ошибка: окно не определено.

Я только недавно начал работать с 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.

0
RoboKy 3 Июл 2017 в 18:04

3 ответа

Удалить эту строку

this.testCall = new Window();

window - это глобальная переменная в JS, просто вызов window.open('url') должен открыть новое окно.

0
user4676340user4676340 3 Июл 2017 в 18:06
Вам нужно удалить эту строку. Если сообщение осталось, значит, вы его не удалили.
 – 
user4676340
4 Июл 2017 в 08:07
Конечно, я удалил эту строку. За исключением того, что теперь он дает мне «TypeError: не удается прочитать свойство 'open' of undefined». Мне очень жаль, что проблема.
 – 
RoboKy
4 Июл 2017 в 09:06
Прочтите, пожалуйста, мой ответ. Я опубликовал ваше решение, и вы 2 раза доказали, что не читали его.
 – 
user4676340
4 Июл 2017 в 09:10

Вы пытались объявить объект window в файле, содержащем HomeComponent ?. если нет, попробуйте объявить его как;

declare var window: any;

В верхней части файла (после импорта).

TypeScript не знает об окне, поскольку мы не предоставляем никакой информации об этом. В этом случае мы можем объявить их, чтобы сообщить компилятору машинописного текста, что ссылка window в глобальном пространстве имен не возникла из файла машинописного текста.

Дополнительные сведения об этом сценарии см. здесь < / а>

0
HashanMadz 4 Июл 2017 в 08:11

Хорошо, по-видимому, 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");
    }
}
}

Это отлично сработало для меня.

0
RoboKy 5 Июл 2017 в 08:51