შექმნა და გამოყენება
კომპონენტების (ისევე, როგორც დირექტივებისა და ფაიფების) შექმნა შეიძლება მათი შემქმნელი
დეკორატორის კონფიგურაციის ობიექტში standalone
თვისებისtrue
-ზე დაყენებით:
@Component({
standalone: true,
selector: "image-grid",
imports: [ImageGridComponent],
templateUrl: "./image-grid.component.ts",
})
export class ImageGridComponent {
// component logic
}
თუ ამ კომპონენტის სადმე გამოყენება დაგვჭირდება, მას არ ვარეგისტრირებთ NgModule
-ში,
არამედ პირდაპირ ვაიმპორტებთ იმ დამოუკიდებელ კომპონენტში, რომელშიც ის დაგვჭირდება:
@Component({
standalone: true,
selector: "photo-gallery",
imports: [ImageGridComponent],
template: ` ... <image-grid [images]="imageList"></image-grid> `,
})
export class PhotoGalleryComponent {
// component logic
}
imports
ველში ასევე შეიძლება დამოუკიდებელი ფაიფებისა და დირექტივების შემოტანაც.
NgModule-ების შემოტანა დამოუკიდებელ კომპონენტებში
თუ ჩვენ აპლიკაციაში გვჭირდება ფუნქციონალი, რომლებიც არ არიან standalone და
მოდულებში არიან შეკრული, მაშინ შეგვიძლია ამ მოდულების კომპონენტში პირდაპირ
შემოტანა imports
მასივში:
@Component({
standalone: true,
selector: "photo-gallery",
// an existing module is imported directly into a standalone component
imports: [MatButtonModule],
template: `
...
<button mat-button>Next Page</button>
`,
})
export class PhotoGalleryComponent {
// logic
}
ასე MatButtonModule
-ში არსებული ყველა დაექსპორტებული კომპონენტი, ფაიფი თუ დირექტივი
ხელმისაწვდომია PhotoGalleryComponent
-ში.
დამოუკიდებელი კომპონენტის შეტანა NgModule-ში
ანალოგიურად, შესაძლებელია დამოუკიდებელი კომპონენტების შეტანა NgModule-ზე დაფუძნებულ კონტექსტშიც. ეს უზრუნველყოფს შესაძლებლობას, რომ ძველი აპლიკაციები ეტაპობრივად და მარტივად გადავიყვანოთ NgModule სისტემიდან standalone სისტემაზე.
@NgModule({
declarations: [AlbumComponent],
exports: [AlbumComponent],
imports: [PhotoGalleryComponent],
})
export class AlbumModule {}
თუმცა PhotoGalleryComponent
არის standalone, მისი დაიმპორტება ძველებური მეთოდითაც
შეიძლება.
ასერომ, დამოუკიდებელი კომპონენტები არ მოდიან კონფლიქტში ანგულარის წინა ვერსიის მოდულებთან. რაღაც თვალსაზრისით, ახლა თითოეული კომპონენტი არის თვითკმარი მოდული.
Bootstrapping
ასეთი სისტემით main.ts
-ში bootstrap განსხვავებულად ხდება. იმის მაგივრად, რომ ეს
მოხდეს მთლიან მოდულზე, გამოიყენება ფუნქცია bootstrapApplication
რომელიც აპლიკაციის
მთავარ დამოუკიდებელ კომპონენტს იღებს:
import { bootstrapApplication } from "@angular/platform-browser";
import { PhotoAppComponent } from "./app/photo.app.component";
bootstrapApplication(PhotoAppComponent);
მეორე არგუმენტად ობიექტში, providers მასივში შესაძლებელია ისეთი მოდულების შემოტანა
რომლებიც (ძველი მიდგომით) forRoot
ფუნქციაზე დაძახებას საჭიროებენ:
import { LibraryModule } from "ngmodule-based-library";
bootstrapApplication(PhotoAppComponent, {
providers: [importProvidersFrom(LibraryModule.forRoot())],
});
აქვე შეიძლება DI-ს კონფიგურაციაც:
bootstrapApplication(PhotoAppComponent, {
providers: [
{
provide: BACKEND_URL,
useValue: "https://photoapp.looknongmodules.com/api",
},
// ...
],
});