de-vraag
  • Klausimai
  • Žymos
  • Vartotojai
Pranešimai
Apdovanojimai
Registracija
Užsiregistravę gausite pranešimus apie atsakymus ir komentarus į savo klausimus.
Prisijungti
Jei jau turite paskyrą, prisijunkite ir patikrinkite naujus pranešimus.
Už pridėtus klausimus, atsakymus ir komentarus bus skiriami apdovanojimai.
Daugiau
Šaltinis
Redaguoti
 supercobra
supercobra
Question

Kaip "Angular 2" / "Typescript" sistemoje deklaruoti globalųjį kintamąjį?

Norėčiau, kad kai kurie kintamieji būtų pasiekiami visur Angular 2 kalba Typescript. Kaip turėčiau tai padaryti?

158 2016-03-22T15:40:43+00:00 3
 Jeff
Jeff
Redaguotas klausimas priešpietr gegužė 2019 в 1:01
Programavimas
angular
typescript
Šis klausimas turi 1 atsakymas atsakymų anglų kalba, norėdami juos perskaityti prisijunkite prie savo paskyros.
Solution / Answer
 supercobra
supercobra
popietr kovas 2016 в 4:43
2016-03-23T16:43:38+00:00
Daugiau
Šaltinis
Redaguoti
#30204017

Čia pateikiamas paprasčiausias sprendimas be Service ir Observer:

Įrašykite globalius kintamuosius į failą ir eksportuokite juos.

//
// ===== File globals.ts    
//
'use strict';

export const sep='/';
export const version: string="22.2.2";    

Norėdami naudoti globaliuosius kintamuosius kitame faile, naudokite importo teiginį: ```import * as myGlobals from './globals';````

Pavyzdys:

// 
// ===== File heroes.component.ts    
//
import {Component, OnInit} from 'angular2/core';
import {Router} from 'angular2/router';
import {HeroService} from './hero.service';
import {HeroDetailComponent} from './hero-detail.component';
import {Hero} from './hero';
import * as myGlobals from './globals'; //<==== this one

export class HeroesComponent implements OnInit {
    public heroes: Hero[];
    public selectedHero: Hero;
    // 
    //
    // Here we access the global var reference.
    //  
    public helloString: string="hello " + myGlobals.sep + " there";

         ...

        }
    }

Ačiū @eric-martinez

 snorkpete
snorkpete
Redaguotas atsakymas priešpietr gegužė 2017 в 5:13
187
0
Thierry Templier
Thierry Templier
popietr kovas 2016 в 3:49
2016-03-22T15:49:06+00:00
Daugiau
Šaltinis
Redaguoti
#30204016

Geriausias būdas - bendroji paslauga

export class SharedService {
  globalVar:string;
}

Tačiau registruodami ją turite būti labai atsargūs, kad galėtumėte dalytis vienu egzemplioriumi su visa programa. Ją reikia apibrėžti registruojant programą:

bootstrap(AppComponent, [SharedService]);

bet ne apibrėžti jį dar kartą savo komponentų providers atributuose:

@Component({
  (...)
  providers: [ SharedService ], // No
  (...)
})

Priešingu atveju komponentui ir jo subkomponentams bus sukurtas naujas jūsų paslaugos egzempliorius.

Galite peržiūrėti šį klausimą apie tai, kaip "Angular2" veikia priklausomybių injekcija ir hierarchiniai injektoriai:

  • https://stackoverflow.com/questions/34804298/whats-the-best-way-to-inject-one-service-into-another-in-angular-2-beta/34807397

Galite pastebėti, kad tarnyboje taip pat galite apibrėžti Observable savybes, kad praneštumėte savo programos dalims, kai pasikeičia jūsų globalios savybės:

export class SharedService {
  globalVar:string;
  globalVarUpdate:Observable<string>;
  globalVarObserver:Observer;

  constructor() {
    this.globalVarUpdate = Observable.create((observer:Observer) => {
      this.globalVarObserver = observer;
    });
  }

  updateGlobalVar(newValue:string) {
    this.globalVar = newValue;
    this.globalVarObserver.next(this.globalVar);
  }
}

Daugiau informacijos rasite šiame klausime:

  • https://stackoverflow.com/questions/34376854/delegation-eventemitter-or-observable-in-angular2/35568924
 Community
Community
Redaguotas atsakymas popietr gegužė 2017 в 12:18
53
0
G&#252;nter Z&#246;chbauer
Günter Zöchbauer
popietr kovas 2016 в 3:41
2016-03-22T15:41:49+00:00
Daugiau
Šaltinis
Redaguoti
#30204015

Pavyzdžiui, žr. https://stackoverflow.com/questions/35993778/angular-2-implementation-of-shared-services.

@Injectable() 
export class MyGlobals {
  readonly myConfigValue:string = 'abc';
}

@NgModule({
  providers: [MyGlobals],
  ...
})

class MyComponent {
  constructor(private myGlobals:MyGlobals) {
    console.log(myGlobals.myConfigValue);
  }
}

arba pateikite atskiras reikšmes

@NgModule({
  providers: [{provide: 'myConfigValue', useValue: 'abc'}],
  ...
})

class MyComponent {
  constructor(@Inject('myConfigValue') private myConfigValue:string) {
    console.log(myConfigValue);
  }
}
 Demodave
Demodave
Redaguotas atsakymas popietr vasaris 2018 в 2:46
37
0
Pridėti klausimą
Kategorijos
Visi
Technologijos
Kultūra / poilsis
Gyvenimas / Menai
Mokslas
Profesionalus
Verslas
Vartotojai
Visi
Naujas
Populiarus
1
Elena Nudel
Registruota prieš 9 valandas
2
firdaus faizal
Registruota prieš 11 valandų
3
Виталий Теслюк
Registruota prieš 2 dienas
4
shokir qochqorov
Registruota prieš 2 dienas
5
Roxana Elizabeth CASTILLO Avalos
Registruota prieš 1 savaitę
DA
DE
EL
ES
FR
ID
IT
JA
KO
LT
LV
NL
PT
RU
SK
TR
ZH
© de-vraag 2022
Šaltinis
stackoverflow.com
pagal licenciją cc by-sa 3.0 nurodant autorystę