Angular 2'de temel bir uygulama oluşturdum, ancak bileşenlerimden birine bir hizmet enjekte edemediğim garip bir sorunla karşılaştım. Bununla birlikte, oluşturduğum diğer üç bileşenden herhangi birine ince bir şekilde enjekte eder.
Yeni başlayanlar için bu hizmet:
import { Injectable } from '@angular/core';
@Injectable()
export class MobileService {
screenWidth: number;
screenHeight: number;
constructor() {
this.screenWidth = window.outerWidth;
this.screenHeight = window.outerHeight;
window.addEventListener("resize", this.onWindowResize.bind(this) )
}
onWindowResize(ev: Event) {
var win = (ev.currentTarget as Window);
this.screenWidth = win.outerWidth;
this.screenHeight = win.outerHeight;
}
}
Ve çalışmayı reddettiği bileşen:
import { Component, } from '@angular/core';
import { NgClass } from '@angular/common';
import { ROUTER_DIRECTIVES } from '@angular/router';
import {MobileService} from '../';
@Component({
moduleId: module.id,
selector: 'pm-header',
templateUrl: 'header.component.html',
styleUrls: ['header.component.css'],
directives: [ROUTER_DIRECTIVES, NgClass],
})
export class HeaderComponent {
mobileNav: boolean = false;
constructor(public ms: MobileService) {
console.log(ms);
}
}
Tarayıcı konsolunda aldığım hata şudur:
İSTİSNA: HeaderComponent: (?) İçin tüm parametreler çözülemiyor.
Bu yüzden bir sağlayıcı var bootstrap işlevinde hizmet var. Ve bunu herhangi bir bileşenimin yapıcısına sorunsuz bir şekilde enjekte edebiliyor gibiyim.
'../'
birindex.ts
(Namlu)? Bunun yerine doğrudan bildirildiği dosyadan içe aktarmayı deneyebilir misiniz?