
Security News
Software Engineering Daily Podcast: Feross on AI, Open Source, and Supply Chain Risk
Socket CEO Feross Aboukhadijeh joins Software Engineering Daily to discuss modern software supply chain attacks and rising AI-driven security risks.
ng-on-rest-detail
Advanced tools
This module is an implementation of generic detail component for ng-on-rest
First of all you need to install the dependency using yarn or npm.
npm install ng-rest-detail -S
yarn add ng-rest-detail
The package comes with different bundles
Thanks to ng-packagr. So feel free to use what suits you best.
Additionaly, you will find typedoc documentation in docs folder.
First, the module must be imported
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { NgorCoreModule } from 'ng-on-rest-core';
import { NgorDetailModule } from 'ng-on-rest-detail';
import { AppComponent } from './components/app.component';
import { CreatePostComponent } from './components/create-post.component';
import { DeletePostComponent } from './components/delete-post.component';
import { EditPostComponent } from './components/edit-post.component';
import { PostsComponent } from './components/posts.component';
@NgModule({
bootstrap: [AppComponent],
declarations: [
AppComponent,
PostsComponent,
CreatePostComponent,
DeletePostComponent,
EditPostComponent,
],
entryComponents: [
PostsComponent,
CreatePostComponent,
DeletePostComponent,
EditPostComponent,
],
imports: [
BrowserModule,
NgorDetailModule.forRoot(),
NgorCoreModule.forRoot({
resources: [
{
components: {
create: CreatePostComponent,
delete: DeletePostComponent,
detail: EditPostComponent,
list: PostsComponent,
},
endPoint: 'http://jsonplaceholder.typicode.com',
name: 'posts',
},
],
}),
],
})
export class AppModule { }
Let's see what this code does
EditPostComponent evolved quite a bit.
import { Component } from '@angular/core';
import { INgorEntityDetailColumn } from 'ng-on-rest-detail';
import { PostClient, PostDetailComponent, PostResource } from '../../../interfaces/components/posts';
import { IPostDto } from '../../../interfaces/dtos/posts';
@Component({
selector: 'detail-post',
template: `
<ngor-update-entity [columns]="columns">
<!-- Your custom content can go here -->
</ngor-update-entity>
`,
})
export class DemoDetailPostComponent implements PostDetailComponent {
public resource: PostResource;
public client: PostClient;
public entity: IPostDto;
public step: string;
public columns: Array<INgorEntityDetailColumn<IPostDto>> = [
{
cells: [
{
class: 'col-12',
label: 'Id',
property: 'id',
},
{
class: 'col-12',
label: 'demo.forms.posts.title',
property: 'title',
},
{
class: 'col-12',
label: 'demo.forms.posts.body',
property: 'body',
},
],
class: 'col-12',
},
];
}
This will output a bootstrap card with a single column grid. ngor-update-entity content is available in a left card section.
If you input a TNgorFormModel in ngor-update-entity it will output an update formular modal containing dynamic form.
import { Component } from '@angular/core';
import { INgorEntityDetailColumn } from 'ng-on-rest-detail';
import { TNgorFormModel } from 'ng-on-rest-forms';
import { PostClient, PostDetailComponent, PostResource } from '../../../interfaces/components/posts';
import { IPostDto } from '../../../interfaces/dtos/posts';
@Component({
selector: 'detail-post',
template: `
<ngor-update-entity [columns]="columns" [model]="model">
<!-- Your custom content can go here -->
</ngor-update-entity>
`,
})
export class DemoDetailPostComponent implements PostDetailComponent {
public resource: PostResource;
public client: PostClient;
public entity: IPostDto;
public step: string;
public columns: Array<INgorEntityDetailColumn<IPostDto>> = [
{
cells: [
{
class: 'col-12',
label: 'Id',
property: 'id',
},
{
class: 'col-12',
label: 'demo.forms.posts.title',
property: 'title',
},
{
class: 'col-12',
label: 'demo.forms.posts.body',
property: 'body',
},
],
class: 'col-12',
},
];
public model: TNgorFormModel = [
{
id: 'title',
label: 'title',
required: true,
type: 'INPUT',
},
{
id: 'body',
label: 'body',
type: 'TEXTAREA',
},
];
}
TODO
You can provide i18n labels via ngor-update-entity input see INgorUpdateEntityLabels interface for help. These will be translated thanks to ngx-translate. It is quite mandatory for modal buttons & card title.
FAQs
detail module
We found that ng-on-rest-detail demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Socket CEO Feross Aboukhadijeh joins Software Engineering Daily to discuss modern software supply chain attacks and rising AI-driven security risks.

Security News
GitHub has revoked npm classic tokens for publishing; maintainers must migrate, but OpenJS warns OIDC trusted publishing still has risky gaps for critical projects.

Security News
Rust’s crates.io team is advancing an RFC to add a Security tab that surfaces RustSec vulnerability and unsoundness advisories directly on crate pages.