„TypeScript“ klaidų taisymas poraštės kampinėje dinaminėje navigacijoje

„TypeScript“ klaidų taisymas poraštės kampinėje dinaminėje navigacijoje
„TypeScript“ klaidų taisymas poraštės kampinėje dinaminėje navigacijoje

Dinaminės poraštės navigacijos kampinis kūrimas

Vykdydami kampinę kelionę neišvengiamai susidursite su iššūkiais, ypač bandydami kurti dinamines funkcijas, pvz., navigaciją. Viena iš tokių funkcijų yra sukurti dinaminę poraštės navigaciją, kuri atspindi pagrindinę jūsų programos naršymo juostą. Tai dažnai reikalinga, kai norite greitos nuorodos į svarbiausius savo svetainės puslapius, bet subtilesniu, neįkyresniu būdu, paprastai pateikiamą puslapio apačioje. 💡

Tačiau diegdami šią funkciją kūrėjai gali susidurti su problemomis dėl TypeScript tipo klaidų. Tai gali būti nelinksma, ypač tiems, kurie vis dar mokosi kampinio kalbos. Šiame straipsnyje mes išnagrinėsime konkrečią klaidą, kuri dažnai kyla kuriant dinamines navigacijos sistemas, ir kaip ją išspręsti. Viskas priklauso nuo „TypeScript“ tipo tikrinimo mechanizmo, kuris užtikrina, kad tipai sutampa tarp pagrindinės naršymo ir dinaminės poraštės. 🚀

Klaida, su kuria galite susidurti, yra susijusi su nesutampančiais tipais tarp maršruto konfigūracijos nuosavybės „pavadinimas“ ir numatomo tipo jūsų komponente. Pagrindinė problema yra ta, kad „TypeScript“ negali išspręsti „pavadinimo“ tipo kaip eilutės, nes tai taip pat gali būti tipas, funkcija ar kita struktūra, kuri sukelia konfliktą. Nesijaudinkite – tai yra dažnas kliūtis, o sutvarkyti lengviau, nei manote!

Kitame skyriuje mes gilinsimės į konkrečią „TypeScript“ klaidą (TS2322), su kuria susiduriate, peržiūrėsime kampinio komponento kodą ir paaiškinsime, kaip žingsnis po žingsnio išspręsti šią problemą. Šiek tiek supratę, kaip veikia „TypeScript“ ir kaip „Angular“ tvarko maršruto parinkimą, galėsite įveikti šią kliūtį ir sukurti dinaminę navigacijos sistemą, kuri sklandžiai veiktų visoje jūsų programoje. 😊

komandą Naudojimo pavyzdys
@Component @Component dekoratorius naudojamas kampiniam komponentui apibrėžti. Jame nurodomi komponento metaduomenys, pvz., parinkiklis, šablonas ir stilius. Šiuo atveju jis naudojamas poraštės naršymo juostos komponentui „footer-nav“ sukurti.
RouterModule RouterModule yra kampinis modulis, leidžiantis naršyti tarp rodinių. Tai būtina maršruto parinkimo funkcijoms, tokioms kaip „routerLink“, „routerLinkActive“, ir tingiam komponentų įkėlimui į „Angular“ programą.
this.router.config Tai masyvas, kuriame yra visa programos maršruto konfigūracija. Naudodami šią nuosavybę galite pasiekti apibrėžtus maršrutus ir filtruoti juos pagal dinaminės navigacijos komponentus, pvz., poraštės navigaciją.
filter() Filtro metodas naudojamas kuriant naują masyvą su visais elementais, kurie išlaiko testą, kurį įgyvendina pateikta atgalinio skambinimo funkcija. Šiuo atveju tai filtruoja maršrutus, kuriuose nėra kelio, pavadinimo ar duomenų, užtikrinant, kad į dinaminę navigaciją būtų įtraukti tik galiojantys maršrutai.
map() Žemėlapio metodas sukuria naują masyvą, užpildytą kiekviename masyvo elemente pateiktos funkcijos iškvietimo rezultatais. Jis naudojamas kiekvienam maršrutui paversti objektu, kuriame yra tik kelias ir pavadinimas, kurių reikia dinaminei navigacijai rodyti.
typeof Operatoriaus tipas naudojamas reikšmės duomenų tipui patikrinti. Čia jis naudojamas patikrinti, ar maršruto pavadinimas yra eilutė, prieš priskiriant jį pavadinimo ypatybei dinaminėje navigacijoje, užtikrinant tinkamą tipo priskyrimą.
isString() (Type Guard) isString yra pasirinktinio tipo apsaugos funkcija. Tipo apsaugos priemonės „TypeScript“ naudojamos tipams susiaurinti. Šiuo atveju jis naudojamas saugiai patikrinti, ar pavadinimas yra eilutė, prieš bandant priskirti ją dinaminės naršymo pavadinimo ypatybei.
! (Non-null Assertion Operator) Nenulio tvirtinimo operatorius (!), naudojamas po kelio ir pavadinimo ypatybių, nurodo „TypeScript“, kad šios savybės niekada nebus niekinės arba neapibrėžtos vykdymo metu, net jei jos gali būti įvestos kaip niekinės. Tai padeda išvengti „TypeScript“ klaidų pasiekiant maršruto ypatybes.
expect() (Jasmine/Unit Test) Tikėtis funkcija naudojama vienetų testuose, siekiant patvirtinti, kad vertė atitinka tam tikras sąlygas. Šiuo atveju jis naudojamas patikrinti, ar komponentas sėkmingai sukurtas ir ar tinkamai filtruojami dinaminiai navigacijos maršrutai.

„TypeScript“ klaidos ir sprendimo tyrimas kampinėje dinaminėje navigacijoje

„Angular“ maršruto parinkimas yra pagrindinė funkcija, leidžianti sukurti dinaminę naršymą programoje. Pagal šį scenarijų problema iškyla bandant sukurti dinaminę poraštės naršymą, atspindintį pagrindinę navigaciją. Klaida įvyksta, kai aptinkamas „TypeScript“ tipo neatitikimas maršrutų ypatybei „title“. Klaidos pranešimas rodo, kad laukiamas tipas yra eilutė, tačiau „TypeScript“ nustatė, kad ypatybė „title“ taip pat gali būti „tipas“>>“ arba „ResolveFn`. Šis neatitikimas įvyksta, nes programa gali naudoti maršruto nustatymo priemones arba kitus dinaminius duomenų šaltinius, todėl maršruto pavadinimas yra sudėtingesnis, o ne statinis eilutę. Norėdami tai išspręsti, turime įsitikinti, kad maršruto pavadinimas yra teisingai priskirtas eilutės tipas, kuris atitiks nustatytą tipą faile "footer-nav.component.ts".

`@Komponentas` dekoratorius naudojamas Angular, kad apibrėžtų komponento metaduomenis. Šiuo atveju jis deklaruoja „footer-nav“ komponentą, kuris tvarko dinaminės poraštės naršymo pateikimą. Komponentas turi svarbių savybių, pvz., „templateUrl“ ir „styleUrls“, kurios atitinkamai nurodo į komponento HTML ir CSS failus. Į komponentų konstruktorių įvedę paslaugą „Maršrutizatorius“, gauname prieigą prie maršruto konfigūracijos ir galime dinamiškai užpildyti navigacijos nuorodas. Komponento masyve „maršrutai“ saugomi būtini duomenys poraštės navigacijai sukurti, o kiekviename maršrute yra „kelis“ ir „pavadinimas“, kurie bus rodomi vartotojo sąsajoje.

Scenarijuje naudojame „this.router.config“, kad pasiektume maršruto konfigūracijas iš pagrindinės programos. Tada metodas „filter()“ naudojamas norint pasirinkti tik tuos maršrutus, kurie yra tinkami, t. y. tie, kurie turi „kelią“ ir „pavadinimą“. Funkcija „map()“ naudojama filtruotiems maršrutams paversti nauju formatu, užtikrinant, kad kiekviename maršruto objekte būtų reikiamos „kelio“ ir „pavadinimo“ savybės. Svarbu tai, kad naudojant nenulinius tvirtinimus (pvz., „route.path!“) siekiama, kad „TypeScript“ žinotų, kad kelio ir pavadinimo ypatybės visada turės reikšmes, net jei jos gali būti pažymėtos kaip „neapibrėžtos“ arba „null“ . Tačiau naudojant šį operatorių reikia būti atsargiems, nes jis nepaiso „TypeScript“ tipo saugos patikrų.

Nors dinaminės navigacijos metodas yra geras būdas generuoti daugkartinio naudojimo poraštės komponentus, vienas iš esminių aspektų yra užtikrinti, kad maršruto konfigūracija būtų saugi. Klaida įvyksta, nes „TypeScript“ tikisi, kad maršruto pavadinimas bus paprasta eilutė, tačiau ji taip pat gali būti sudėtingo tipo (pvz., funkcija „Išspręsti“ arba „Tipas“). Norėdami tai išspręsti, galite modifikuoti filtravimo logiką arba pridėti tipo apsaugos, kad užtikrintumėte, jog dinaminei navigacijai būtų priskirti tik tinkami pavadinimai. Galų gale bus sukurtas saugaus tipo, dinamiškai sugeneruotas naršymo meniu, kuris veikia taip pat, kaip pagrindinė naršymo priemonė, bet yra poraštėje. Šis metodas padeda išlaikyti programą modulinę ir švarią bei bus vertingas jūsų kampinio kūrimo įrankių rinkinio papildymas! 😊

„TypeScript“ tipo neatitikimo taisymas poraštės kampinėje dinaminėje navigacijoje

TypeScript, kampinė, dinaminė navigacija

import { Component, inject } from '@angular/core';
import { RouterModule, Router, NavigationEnd } from '@angular/router';
@Component({
  selector: 'footer-nav',
  standalone: true,
  imports: [RouterModule],
  templateUrl: './footer-nav.component.html',
  styleUrl: './footer-nav.component.scss'
})
export class FooterNavComponent {
  routes: { path: string; title: string; }[] = [];
  constructor(private router: Router) {
    this.routes = this.router.config.filter(route => route.path !== '' && route.data && route.title)
      .map(route => ({ path: route.path!, title: route.title as string! }));
  }
}

Alternatyvus metodas: „TypeScript“ klaidų tvarkymas, skirtas dinaminei navigacijai su sudėtingais maršrutais

„TypeScript“, kampinis, klaidų apdorojimas, dinaminė navigacija

import { Component, inject } from '@angular/core';
import { RouterModule, Router, NavigationEnd } from '@angular/router';
@Component({
  selector: 'footer-nav',
  standalone: true,
  imports: [RouterModule],
  templateUrl: './footer-nav.component.html',
  styleUrl: './footer-nav.component.scss'
})
export class FooterNavComponent {
  routes: { path: string; title: string; }[] = [];
  constructor(private router: Router) {
    this.routes = this.router.config.filter(route => route.path !== '' && route.data && route.title)
      .map(route => ({ path: route.path!, title: typeof route.title === 'string' ? route.title : 'Default Title' }));
  }
}

Tipo apsaugos naudojimas siekiant užkirsti kelią TypeScript tipo klaidoms dinaminėje navigacijoje

TypeScript, kampinis, tipo apsaugos, navigacija

import { Component, inject } from '@angular/core';
import { RouterModule, Router, NavigationEnd } from '@angular/router';
function isString(value: string | Type<Resolve<string>> | ResolveFn<string>): value is string {
  return typeof value === 'string';
}
@Component({
  selector: 'footer-nav',
  standalone: true,
  imports: [RouterModule],
  templateUrl: './footer-nav.component.html',
  styleUrl: './footer-nav.component.scss'
})
export class FooterNavComponent {
  routes: { path: string; title: string; }[] = [];
  constructor(private router: Router) {
    this.routes = this.router.config.filter(route => route.path !== '' && route.data && route.title)
      .map(route => ({ path: route.path!, title: isString(route.title) ? route.title : 'Fallback Title' }));
  }
}

Kampinio dinaminio navigacijos komponento vieneto bandymo pavyzdys

Kampinis, vienetinis bandymas, Jest, jazminas

import { ComponentFixture, TestBed } from '@angular/core/testing';
import { RouterModule, Router } from '@angular/router';
import { FooterNavComponent } from './footer-nav.component';
describe('FooterNavComponent', () => {
  let component: FooterNavComponent;
  let fixture: ComponentFixture<FooterNavComponent>;
  beforeEach(async () => {
    await TestBed.configureTestingModule({
      imports: [RouterModule],
      declarations: [FooterNavComponent]
    }).compileComponents();
  });
  beforeEach(() => {
    fixture = TestBed.createComponent(FooterNavComponent);
    component = fixture.componentInstance;
    fixture.detectChanges();
  });
  it('should create the component', () => {
    expect(component).toBeTruthy();
  });
  it('should filter routes correctly', () => {
    const filteredRoutes = component.routes;
    expect(filteredRoutes.length).toBeGreaterThan(0);
  });
});

Lentelė: Konkrečių komandų, naudojamų kampiniame dinaminės navigacijos sprendime, paaiškinimas

Dinaminės navigacijos ir „TypeScript“ klaidų taisymo kampo supratimas

„Angular“ dinaminės navigacijos sistemos kūrimas gali būti puikus būdas pagerinti vartotojo patirtį, ypač kai norite pakartoti arba kopijuoti tam tikrus naršymo elementus įvairiose programos dalyse. Dažnas to pavyzdys yra dinaminės naršymo juostos kūrimas poraštėje, panašiai į esančią antraštėje. Klaida, su kuria susidūrėte, TS2322, įvyko dėl tipo neatitikimo „TypeScript“, kai tikimasi, kad maršrutų pavadinimas yra paprasta eilutė, tačiau ji taip pat gali būti sudėtingesnė dėl naudojamų sprendinių arba dinaminių duomenų gavimo metodų. kaip „Išspręsti“ arba „IšspręstiFn“. Šios išplėstinės funkcijos leidžia maršrutams gauti duomenis prieš navigaciją, tačiau gali kilti problemų, kai „TypeScript“ negali nustatyti tinkamo maršruto ypatybių, pvz., „pavadinimo“, tipo.

Kad išspręstumėte problemą, turite pakoreguoti kodą, kad būtų tinkamai tvarkomi sudėtingi tipai. Vienas iš būdų yra modifikuoti maršruto konfigūracijas siekiant užtikrinti, kad kiekviena maršruto ypatybė „pavadinimas“ būtų aiškiai apibrėžta kaip eilutė. Tai galima padaryti naudojant tipo teiginius arba tipo apsaugos priemones, kad patikrintumėte, ar „pavadinimas“ yra eilutė, prieš priskirdami ją jūsų komponento „maršrutų“ masyvai. Be to, jei jūsų maršrutai naudoja raiškius dinaminiams pavadinimams gauti, įsitikinkite, kad duomenys gauti ir tinkamai nustatyti, prieš navigacijos komponentui bandant pasiekti pavadinimą. Tai garantuos, kad TypeScript tipo sistema gali tinkamai patvirtinti maršruto ypatybes.

Kitas svarbus aspektas yra užtikrinti, kad „RouterModule“ ir „Router“ paslaugos būtų tinkamai sukonfigūruotos jūsų kampiniame modulyje. Šios paslaugos suteikia funkcionalumą, reikalingą dinamiškai filtruoti ir susieti poraštės navigacijos maršruto konfigūraciją. Įterpę paslaugą „Router“ į savo komponento konstruktorių ir pasiekę „this.router.config“, galite filtruoti turimus maršrutus ir sukurti naują maršrutų masyvą, skirtą specialiai poraštei. Taip užtikrinama, kad poraštės navigacija būtų dinamiškai sukurta naudojant tą pačią maršruto konfigūraciją kaip ir pagrindinė navigacija, todėl jūsų programa yra modulinė ir lengvai prižiūrima.

Dažnai užduodami klausimai apie dinaminę navigaciją ir „TypeScript“ klaidas kampe

  1. Kaip ištaisyti TS2322 klaidą, susijusią su maršruto pavadinimu „Angular“?
  2. Klaida įvyksta, nes „TypeScript“ tikisi, kad maršruto pavadinimas bus eilutė, tačiau tai gali būti ir sudėtingesnis tipas, pvz., „Išspręsti“. Norėdami tai išspręsti, galite naudoti tipo tvirtinimą, kad įsitikintumėte, jog pavadinimas traktuojamas kaip eilutė, arba atnaujinti maršruto konfigūraciją, kad įsitikintumėte, jog „pavadinimas“ visada yra eilutė, kai pasiekiama jūsų komponente. Example: „pavadinimas: maršrutas.pavadinimas kaip eilutė“.
  3. Koks yra geriausias būdas dinamiškai generuoti poraštės naršymą Angular?
  4. Galite dinamiškai generuoti poraštės naršymą naudodami kampinį `RouterModule' ir 'Router' paslaugas. Pirmiausia turite įterpti „Router“ į savo komponentą, pasiekti „this.router.config“, filtruoti ir susieti maršrutus, tada parodyti juos naudodami „*ngFor“ savo šablone.
  5. Kaip galiu užtikrinti, kad dinaminė navigacija veiktų tingiai apkrautuose maršrutuose?
  6. Laisvai įkelti maršrutai nėra iš karto pasiekiami maršruto konfigūracijoje. Norėdami užtikrinti, kad jie būtų įtraukti į dinaminę navigaciją, pirmiausia turite užtikrinti, kad maršrutai būtų teisingai apibrėžti naudojant „loadChildren“ arba „loadComponent“ maršruto parinkimo modulyje. Tada naudokite „Maršrutizatoriaus“ paslaugą, kad pasiektumėte dinamiškai įkeltus maršrutus ir įtrauktumėte juos į poraštės navigaciją.
  7. Ar galiu naudoti maršruto nustatymo priemones navigacijos pavadinimų duomenims įkelti?
  8. Taip, maršruto nustatymo priemonės puikiai tinka įkelti duomenis prieš navigaciją. Galite naudoti skyriklį, kad gautumėte dinaminius savo maršrutų pavadinimus, tačiau prieš bandydami susieti maršrutus su dinaminės navigacijos komponentu, įsitikinkite, kad pavadinimas yra pasiekiamas. Pavadinimas turi būti eilutė, kai jį pasiekiate.
  9. Koks yra „map()“ vaidmuo filtruojant ir keičiant maršruto duomenis?
  10. `map()Funkcija ` naudojama duomenims iš maršruto konfigūracijos transformuoti. Tai leidžia pasirinkti ir transformuoti konkrečias maršruto objekto ypatybes (pvz., „kelias“ ir „pavadinimas“) ir sukurti naują supaprastintų maršruto objektų masyvą, skirtą naudoti komponente. Taip duomenys tampa lengviau valdomi ir užtikrinama, kad į poraštės naršymą būtų perduodami tik svarbūs duomenys.
  11. Ar griežtas TypeScript režimas gali sukelti dinaminės naršymo problemų?
  12. Taip, griežtas „TypeScript“ režimas sukurtas taip, kad anksti pastebėtų tipų neatitikimus ir klaidas. Tai gali būti naudinga, tačiau tai taip pat reiškia, kad turite aiškiai nurodyti savo tipus. Jei naudojate sudėtingus tipus, pvz., „Išspręsti“ arba „IšspręstiFn“, įsitikinkite, kad juos teisingai naudojate pagal tipo tvirtinimą arba tipo apsaugas, kad išvengtumėte naršymo logikos klaidų.
  13. Kaip „Angular“ „routerLinkActive“ veikia dinaminėje navigacijoje?
  14. „routerLinkActive“ yra direktyva, naudojama CSS klasei pridėti prie aktyvios naršymo nuorodos. Dinaminėje poraštės navigacijoje ji padeda paryškinti šiuo metu aktyvų maršrutą. Galite nustatyti jį į „aktyvus“, kad sukurtumėte nuorodos stilių, kai maršrutas aktyvus, vartotojui pateikiant vaizdinę užuominą apie tai, kurią svetainės dalį jis šiuo metu žiūri.
  15. Kodėl dinaminė naršymas neatnaujinamas naršant?
  16. Jei dinaminis naršymas neatnaujinamas, gali būti, kad komponentas neaptinka pakeitimų. Norėdami tai išspręsti, įsitikinkite, kad navigacijos komponentas įsiklauso į maršrutizatoriaus įvykius ir atitinkamai atnaujina maršrutų sąrašą. Galite naudoti Angular's `Router.events` norėdami užsiprenumeruoti maršruto pakeitimus ir dinamiškai atnaujinti aktyvių maršrutų sąrašą.
  17. Ar galiu taikyti tą pačią dinaminę maršruto parinkimo logiką ir antraštei, ir poraštei?
  18. Taip, dinaminės naršymo kūrimo logika veikia ir antraštėje, ir poraštėje. Galite pakartotinai naudoti maršruto filtravimo ir atvaizdavimo kodą abiejuose komponentuose, jei jie abu pasiekia tą pačią maršruto konfigūraciją ir dinamiškai generuoja nuorodas.

Dirbdami su dinamine navigacija „Angular“, kūrėjai dažnai susiduria su tokiomis klaidomis kaip TS2322, nes maršruto konfigūracijose laukiami ir faktiniai tipai nesutampa. Šiame straipsnyje aptarėme, kaip išspręsti su „TypeScript“ susijusias problemas maršrutą savybes, ypač titulą. Sprendimas apima nuoseklų maršrutų įvedimą, nesvarbu, ar dirbate su tingiai įkeliamais moduliais, ar naudojate Sprendimai dinamiškam turiniui. Taip pat aptarėme geriausios praktikos pavyzdžius, kaip sukurti poraštės dinaminę navigaciją pagal jūsų pagrindinę maršruto konfigūraciją.

„TypeScript“ klaidų taisymo dinaminėje navigacijoje supratimas

„Angular“ lankstumas leidžia kūrėjams lengvai nustatyti dinaminę įvairių komponentų, įskaitant poraštę, naršymą. Tačiau dirbant su tingiai įkeliamais maršrutais ir dinamišku turiniu, „TypeScript“ gali sukelti klaidų, pvz., TS2322, dėl tipo neatitikimų. Dažniausiai pasitaikanti problema susijusi su maršruto konfigūracijomis, kai galima tikėtis, kad maršruto pavadinimas bus paprastas styga, bet kartais gali būti sudėtingiau dėl Sprendimai arba asinchroniniai duomenų gavimo metodai. Svarbiausias šios problemos sprendimas – užtikrinti nuoseklų ir teisingą maršrutų įvedimą.

Vienas geriausių sprendimų yra atnaujinti maršruto konfigūraciją, siekiant užtikrinti, kad kiekvieno maršruto pavadinimas būtų aiškiai įvestas kaip eilutė. Tai galima padaryti naudojant tipo tvirtinimus arba paprastus patikrinimus maršruto planavimo logikoje. Jei pavadinimo ypatybė dinamiškai išsprendžiama naudojant Resolver, turite užtikrinti, kad duomenys būtų prieinami ir tinkamai įvesti, prieš perduodant juos poraštės komponentui, kad būtų rodomas. Taip elgdamasi „TypeScript“ tinkamai patvirtins duomenis ir užkirs kelią klaidoms, kai poraštės navigacijos komponentas bando pasiekti maršruto pavadinimą.

Be to, norėdami padidinti programos mastelį, turėtumėte apsvarstyti galimybę pakartotinai naudoti pagrindinę naršymo logiką kitose programos dalyse, pvz., poraštėje. Tai galima lengvai pasiekti pasiekiant maršrutus, nurodytus programos maršruto parinkimo modulyje, išfiltravus reikiamus duomenis ir perduodant juos poraštės naršymui. Sušvirkštus Maršrutizatorius paslaugą ir naudodami Angular maršruto parinkimo metodus, galite sukurti modulinę, dinaminę navigacijos sistemą, kuri nuosekliai veiktų įvairiose svetainės dalyse.

Išvada:

Apibendrinant, „TypeScript“ klaidų, susijusių su dinamine navigacija „Angular“, sprendimas priklauso nuo tinkamo maršruto tipų valdymo. Užtikrindami, kad savybės būtų įvestos nuosekliai, kūrėjai gali išvengti įprastų spąstų, pvz., TS2322 klaidos. Be to, daugkartinio naudojimo dinaminės navigacijos sukūrimas gali supaprastinti skirtingų programos komponentų naršymo valdymą.

Laikydamiesi geriausios tingaus įkėlimo, maršruto duomenų gavimo ir komponentų moduliškumo praktikos, galite sukurti efektyvią ir be klaidų dinaminę navigacijos sistemą. Atsižvelgdami į šias koncepcijas, jūsų Angular programas bus lengviau prižiūrimas, lankstesnis ir patogesnis naudoti. 🚀

Literatūra ir šaltinio medžiaga
  1. Suteikia įžvalgų, kaip suprasti „TypeScript“ klaidas ir dinaminės naršymo „Angular“ sprendimus. Norėdami gauti išsamesnės informacijos, apsilankykite Kampinė dokumentacija .
  2. Aptariama maršruto konfigūracija ir „TypeScript“ tipo suderinamumas, kuris tiesiogiai susijęs su klaida TS2322, aptikta kode. Nuoroda: Oficiali TypeScript dokumentacija .
  3. Paaiškina tingų įkėlimą Angular ir kaip tvarkyti maršruto duomenis dinaminei navigacijai. Daugiau skaitymo galite rasti adresu Kampinis tingus pakrovimo vadovas .