Muirik Ответов: 1

Понимание причины "исключения: не удается прочитать свойство 'url' неопределенного " re: сокета.IO в моей угловой приложение 2


Я пытаюсь понять, что вызывает ошибку" EXCEPTION: Cannot read property 'url' of undefined " в конкретном экземпляре. Я импортирую сокет.io в компонент, и я излучаю в моем ngOnInit, который также правильно импортируется. Я также ссылаюсь на службу чата, которая также импортируется и создается в конструкторе и предоставляется в корневом модуле app.module. Проблема связана с" url", на который ссылаются в моем ngOnInit. Это то, что у меня есть в компоненте:

импорт { роутер } от '@угловое/маршрутизатор';
импорт { AlertService } из '. / data/alert. service';
импорт { Component, ViewContainerRef, OnInit } из '@angular/core';
импорт * как io из 'socket. io-client';
импорт './rxjs-operators';
импорт { API } из ". / data / api. service";
импорт { Поиск } из ". / data/search. service";
импорт { ChatService } из '. / ui/chat/chat. service';

@Компонент({
селектор: "приложение",
templateUrl: 'app/app.component.html',
styleUrls: ['приложение/приложение.компонент.Усс']
})
экспорт класса AppComponent реализует OnInit
{
частная розетка;
частный маршрут;
частная адресу: строку;
public tabOptions: string [] = ['typeA/', ' typeB/'];

public static get view(): ViewContainerRef
{
вернуться AppComponent._view;
}

private static _view: ViewContainerRef;

конструктор (api: API,
поиск: поиск,
viewContainer: ViewContainerRef,
частный маршрутизатор: маршрутизатор,
приватный чат-сервис: ChatService)
{
AppComponent. _view = viewContainer;
}

нгонинит() {
это.маршрутизатор.событий.подписаться((маршрут) =&ГТ; {
пусть routeUrl = маршруте.URL-адрес;
console. log ('пользовательский маршрут изменен на:' + routeUrl);
это.chatService.trackUser();
});
}
}

Этот компонент вызывает службу chat. service и, в частности, функцию " trackUser ()", которая выглядит следующим образом:

импорт { контекстное меню } от './../контекст-меню.компонент';
импорт { authenticationservice присвоено } от './../../проверка подлинности данных.обслуживание';
импорт { инъекционный } от '@угловых/центральных;
импорт { Subject } из 'rxjs/Subject';
импорт { Observable } из 'rxjs/Observable';
импорт * как io из 'socket. io-client';
импорт { Http } из '@angular/http';

@Инъецируемый()
экспорт класса ChatService {
частный url = 'http://localhost:5000';
частная розетка;
имя;
прозвище;
пользователь;
сообщение;
routeUrl;
маршрут;

конструктор (private http: Http,
частная authenticationservice присвоено: authenticationservice присвоено) {}

trackUser() {
пусть routeUrl = это.маршрут.URL-адрес;
это.гнездо.трек-пользователей испустить ('', эта.routeUrl);
}

sendMessage(сообщение) {
это.гнездо.испустить('добавить сообщение', сообщение);
консоли.(сообщение журнала);
}

метода getmessages() {
пусть observable = new Observable(observer => {
это.гнездо = Ио(это.URL-адрес);
это.гнездо.на('сообщение', (дата) =&ГТ; {
наблюдатель.следующий(данные);
});
return () => {
это.гнездо.разъединять();
};
});
возвращение наблюдаемое;
}
}

Что я уже пробовал:

Я попытался использовать приведенный выше код, но получаю описанную выше ошибку, которую пытаюсь отследить.

1 Ответов

Рейтинг:
0

Dave Kreskowiak

В принципе, вы пытаетесь получить/установить значение url для переменной, которая ничего не содержит, она равна нулю.

Вам предстоит выяснить, почему эта переменная является нулевой, а не содержит объект, который, как вы думаете, она содержит.