2016-08-11 2 views
0

Я уже читал подобные вопросы по этому поводу в StackOverflow, но они, похоже, не работают для моей ситуации. Я нахожусь в самой последней версии Angular.Угловой 2 Провайдер для LoadingService

погрузчик Компонент

import {Component, ElementRef, OnInit, OnDestroy} from '@angular/core'; 
import {CORE_DIRECTIVES} from "@angular/common"; 
import {LoadingService} from "../../services/global/loadingService"; 

@Component({ 
    selector: 'loader', 
    directives: [CORE_DIRECTIVES], 
    providers: [LoadingService], 
    template: ` 
    <div class ="blue"></div> 
    `, 
}) 

export class LoadingComponent { 
    public active: boolean; 

    public constructor(spinner: LoadingService) { 
    spinner.status.subscribe((status: boolean) => { 
     this.active = status; 
    }); 
    } 
} 

Loader Service

import {Injectable} from '@angular/core'; 
import {Subject} from 'rxjs/Subject'; 
import 'rxjs/add/operator/share'; 

@Injectable() 
export class LoadingService { 
    public status: Subject<any> = new Subject(); 
    private _active: boolean = false; 

    public get active(): boolean { 
    return this._active; 
    } 

    public set active(v: boolean) { 
    this._active = v; 
    this.status.next(v); 
    } 

    public start(): void { 
    this.active = true; 
    } 

    public stop(): void { 
    this.active = false; 
    } 
} 

Моя ошибка: Ошибка: Uncaught (обещанию): Нет кормильцем LoadingService!

Любая помощь была бы принята с благодарностью. Спасибо!

+0

Вам не нужно указывать 'CORE_DIRECTIVES'. По умолчанию они доступны по всему миру. Не знаю, что вы делали. Код выглядит отлично. –

ответ

0

Здесь нет ничего плохого в коде, который вы разместили здесь. Я поместил его в свой проект, и он загружается без каких-либо проблем. Вероятнее всего, ваша проблема связана с вашей конфигурацией SystemJS или с какой-либо другой проблемой, которая предотвращает правильную загрузку приложения и, следовательно, не может решить, как ввести ваш LoadingService. Используйте инструменты разработчика Chrome, чтобы посмотреть на консоль, когда приложение загружается, и посмотреть, показывает ли он вам какие-либо другие проблемы. В качестве альтернативы, разместите свой полный нерабочий пример где-нибудь, где мы можем увидеть весь код (например, Plunkr или JSFiddle).