Files
bbq/src/app/shared/components/search-drawer/search-drawer.component.ts
Taric Xin 31d9eac5f0 edit
2022-05-05 10:23:24 +08:00

59 lines
1.5 KiB
TypeScript

import { AfterViewInit, Component, OnInit, ViewChild } from '@angular/core';
import { SFComponent, SFSchema, SFUISchema } from '@delon/form';
import { _HttpClient } from '@delon/theme';
import { Subject } from 'rxjs';
import { SearchDrawerService } from './search-drawer.service';
@Component({
selector: 'app-search-drawer',
templateUrl: './search-drawer.component.html',
styleUrls: ['./search-drawer.component.less']
})
export class SearchDrawerComponent implements OnInit, AfterViewInit {
@ViewChild('sf', { static: false }) sf!: SFComponent;
ui: SFUISchema = { '*': { spanLabelFixed: 95, grid: { span: 12, gutter: 24 } } };
schema!: SFSchema;
loading = true;
defaultValue = {};
constructor(public service: SearchDrawerService, public http: _HttpClient) {}
ngAfterViewInit(): void {}
ngOnInit(): void {
this.defaultValue = {};
this.service.createEvent.subscribe(({ defaultValue, newSchema, newUI }) => {
if (defaultValue) {
this.defaultValue = defaultValue;
}
if (newSchema) {
this.schema = newSchema;
if (this.sf) {
this.sf.refreshSchema(newSchema, newUI);
this.sf.reset();
}
this.service.visible = true;
}
setTimeout(() => {
this.service.initEvent.next(this.sf);
}, 500);
});
}
resetSF(): void {
this.sf.reset();
this.defaultValue = {};
}
search() {
if (this.sf) {
this.service.closeEvent.next(this.sf?.value);
}
}
destroy() {
this.service.visible = false;
}
}