Skip to content

Instantly share code, notes, and snippets.

View aniketmuruskar's full-sized avatar

Aniket Muruskar aniketmuruskar

  • EPAM Systems
  • Pune
View GitHub Profile
@aniketmuruskar
aniketmuruskar / app.resolver.ts
Created August 6, 2022 16:18
Server api url configuration
const option = {
url: Routes.fetchLocalResponse(pageName),
// url: Routes.fetchServerResponse(pageName)
};
@aniketmuruskar
aniketmuruskar / project-detail.json
Created August 6, 2022 16:08
Sample page responses to create the dynamic components
{
"pageElements": [
{
"id": "projectDetailTitle",
"name": "projectDetailTitle",
"componentType": "label",
"visible": true,
"data": "Dynamic component loader",
"heading": true
},
@aniketmuruskar
aniketmuruskar / app-ui-builder.component.ts
Created August 6, 2022 14:50
Page builder component takes component list as input and adds inside the component host directive
import { Component, Input, OnChanges, OnDestroy, OnInit, SimpleChanges, ViewChild } from '@angular/core';
import { AddComponent } from '../add.component';
import { AppComponentHostDirective } from '../app-component-host.directive';
@Component({
selector: 'app-ui-builder',
templateUrl: './app-ui-builder.component.html',
styleUrls: []
})
export class AppUIBuilderComponent implements OnInit, OnDestroy, OnChanges {
@aniketmuruskar
aniketmuruskar / app-dynamic.component.ts
Created August 6, 2022 14:13
App dynamic component to listen route resolve data.
import { Component, OnInit } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { AddComponent } from '../add.component';
@Component({
selector: 'app-dynamic-component',
templateUrl: './app-dynamic.component.html',
styleUrls: []
})
export class AppDynamicComponent implements OnInit {
@aniketmuruskar
aniketmuruskar / add.component.ts
Last active August 6, 2022 14:01
Page builder service to resolve component based componentType
import { Type } from '@angular/core';
export class AddComponent {
constructor(
public component: Type<any>,
public config: any,
public data: string
) {}
}
@aniketmuruskar
aniketmuruskar / app.resolver.ts
Created August 6, 2022 13:29
Application resolver service to fetch data on each route transition
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import {
Resolve,
RouterStateSnapshot,
ActivatedRouteSnapshot
} from '@angular/router';
import { map, Observable } from 'rxjs';
import { PageBuilderService } from './page-builder.service';
@aniketmuruskar
aniketmuruskar / app-dynamic.component.html
Created August 6, 2022 13:20
Dynamic component container
<app-ui-builder [components]="components"></app-ui-builder>
@aniketmuruskar
aniketmuruskar / app-routing.module.ts
Created August 6, 2022 13:01
Application routing module having two routes
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { AppDynamicComponent } from './app-dynamic-component/app-dynamic.component';
import { AppResolver } from './shared/app.resolver';
const routes: Routes = [
{
path: 'project-overview',
component: AppDynamicComponent,
resolve: {
@aniketmuruskar
aniketmuruskar / app.component.html
Created August 6, 2022 12:52
App component having routing for demonstration to load component based on json response from server
<div class="container mt-4">
<ul>
<li><a routerLink="/project-overview" routerLinkActive="active">Project Overview</a></li>
<li><a routerLink="/project-detail">Project Detail</a></li>
</ul>
<router-outlet></router-outlet>
</div>
@aniketmuruskar
aniketmuruskar / app-ui-builder.component.ts
Created August 6, 2022 12:43
Host component typescript file
import { Component, Input, OnChanges, OnDestroy, OnInit, SimpleChanges, ViewChild } from '@angular/core';
import { AddComponent } from '../add.component';
import { AppComponentHostDirective } from '../app-component-host.directive';
@Component({
selector: 'app-ui-builder',
templateUrl: './app-ui-builder.component.html',
styleUrls: []
})
export class AppUIBuilderComponent implements OnInit, OnDestroy, OnChanges {