默认情况下,JHipster 4(Angular 2和Bootstrap 4)将视图对话框置于弹出模式。如何在没有弹出窗口的情况下将此类视图恢复为普通格式?
我创建了一个实体“博客”。并生成了这些文件:
后dialog.component.ts
import { Component, OnInit, OnDestroy } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { Response } from '@angular/http';
import { Observable } from 'rxjs/Rx';
import { NgbActiveModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap';
import { EventManager, AlertService, DataUtils } from 'ng-jhipster';
import { Post } from './post.model';
import { PostPopupService } from './post-popup.service';
import { PostService } from './post.service';
import { Blog, BlogService } from '../blog';
import { ResponseWrapper } from '../../shared';
@Component({
selector: 'jhi-post-dialog',
templateUrl: './post-dialog.component.html'
})
export class PostDialogComponent implements OnInit {
post: Post;
authorities: any[];
isSaving: boolean;
blogs: Blog[];
constructor(
public activeModal: NgbActiveModal,
private dataUtils: DataUtils,
private alertService: AlertService,
private postService: PostService,
private blogService: BlogService,
private eventManager: EventManager
) {
}
ngOnInit() {
this.isSaving = false;
this.authorities = ['ROLE_USER', 'ROLE_ADMIN'];
this.blogService.query()
.subscribe((res: ResponseWrapper) => { this.blogs = res.json; }, (res: ResponseWrapper) => this.onError(res.json));
}
byteSize(field) {
return this.dataUtils.byteSize(field);
}
openFile(contentType, field) {
return this.dataUtils.openFile(contentType, field);
}
setFileData(event, post, field, isImage) {
if (event.target.files && event.target.files[0]) {
const file = event.target.files[0];
if (isImage && !/^image\//.test(file.type)) {
return;
}
this.dataUtils.toBase64(file, (base64Data) => {
post[field] = base64Data;
post[`${field}ContentType`] = file.type;
});
}
}
clear() {
this.activeModal.dismiss('cancel');
}
save() {
this.isSaving = true;
if (this.post.id !== undefined) {
this.subscribeToSaveResponse(
this.postService.update(this.post), false);
} else {
this.subscribeToSaveResponse(
this.postService.create(this.post), true);
}
}
private subscribeToSaveResponse(result: Observable<Post>, isCreated: boolean) {
result.subscribe((res: Post) =>
this.onSaveSuccess(res, isCreated), (res: Response) => this.onSaveError(res));
}
private onSaveSuccess(result: Post, isCreated: boolean) {
this.alertService.success(
isCreated ? 'myApp.post.created'
: 'myApp.post.updated',
{ param : result.id }, null);
this.eventManager.broadcast({ name: 'postListModification', content: 'OK'});
this.isSaving = false;
this.activeModal.dismiss(result);
}
private onSaveError(error) {
try {
error.json();
} catch (exception) {
error.message = error.text();
}
this.isSaving = false;
this.onError(error);
}
private onError(error) {
this.alertService.error(error.message, null, null);
}
trackBlogById(index: number, item: Blog) {
return item.id;
}
}
@Component({
selector: 'jhi-post-popup',
template: ''
})
export class PostPopupComponent implements OnInit, OnDestroy {
modalRef: NgbModalRef;
routeSub: any;
constructor(
private route: ActivatedRoute,
private postPopupService: PostPopupService
) {}
ngOnInit() {
this.routeSub = this.route.params.subscribe((params) => {
if ( params['id'] ) {
this.modalRef = this.postPopupService
.open(PostDialogComponent, params['id']);
} else {
this.modalRef = this.postPopupService
.open(PostDialogComponent);
}
});
}
ngOnDestroy() {
this.routeSub.unsubscribe();
}
}