Понимание причины "исключения: не удается прочитать свойство '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 () => {
это.гнездо.разъединять();
};
});
возвращение наблюдаемое;
}
}
Что я уже пробовал:
Я попытался использовать приведенный выше код, но получаю описанную выше ошибку, которую пытаюсь отследить.