代码之家  ›  专栏  ›  技术社区  ›  Chic Si

在ngx bootstrap的日期选择器上分离输入和日历

  •  0
  • Chic Si  · 技术社区  · 7 年前

    我想在ngx引导程序的日期选择器上分离输入和日历。 然后我想将日期选择器的主体插入到特定的标记中。

    这是我写的代码,请慢慢读

    日期组成部分ts

    import {
      Component, OnInit, OnDestroy, ViewChild, ComponentFactoryResolver, ViewContainerRef, Injector
    } from '@angular/core';
    import { BsDatepickerConfig } from 'ngx-bootstrap';
    import { BsDatepickerContainerComponent } from 'ngx-bootstrap/datepicker/themes/bs/bs-datepicker-container.component';
    
    @Component({
      selector : 'app-date',
      templateUrl : './date.component.html'
    })
    
    export class DateComponent implements OnInit, OnDestroy {
      factory: any;
      injector: any;
      config: BsDatepickerConfig;
      instance: any;
    
      @ViewChild('dp', {read: ViewContainerRef}) dp;
    
      constructor(
        private resolver: ComponentFactoryResolver
      ) {
      }
    
      ngOnInit() {
    
        this.config = new BsDatepickerConfig();
    
        const minDate  = new Date(1900, 1, 1);
        const maxDate = new Date();
        maxDate.setHours(11, 59, 59, 999);
    
        this.config.minDate = minDate;
        this.config.maxDate = maxDate;
        this.config.showWeekNumbers = false;
    
        this.injector = Injector.create([{provide: BsDatepickerConfig, useValue: this.config}]);
    
        this.factory = this.resolver.resolveComponentFactory(BsDatepickerContainerComponent);
    
        this.instance = this.makeInstance(this.dp);
    
      }
    
      makeInstance(view: ViewContainerRef) {
        view.clear();
        const component = this.factory.create(this.injector);
        view.insert(component.hostView);
        return component.instance;
      }
    
      ngOnDestroy() {
      }
    }
    

    日期组成部分html

    <div #dp></div>
    

    如果此代码有任何问题,请与我们分享您的想法。

    1 回复  |  直到 7 年前
        1
  •  1
  •   valorkin    7 年前

    您可以使用ngx bootstrap提供的ComponentLoaderFactory 这要容易得多 检查一下 https://github.com/valor-software/ngx-bootstrap/blob/4a7f2f0ed720d159430961f7acddfd781628561c/src/datepicker/bs-datepicker.component.ts

    作为示例

    在组件加载器内部,您可以找到如何注入组件的示例:)