角度材质对话框:错误:StaticInjectorError[TicketService]

埃尔坎·埃尔基斯

我遇到了提供者声明的问题。主要逻辑是您创建一个服务,然后在子项使用的 AppComponent 上声明此服务。但是当我使用父服务声明时,出现错误。

App 组件有提供者,所以我不应该在 CreateComponent 中声明提供者标签。并且 header 成功地使用了这个提供者,但产生了问题。如果您需要有关代码的更多详细信息,我可以提供。

App.Component.ts

import { Component } from '@angular/core';
import { TicketService } from './tickets/ticket.service';
import { Ticket } from './tickets/ticket/ticket.model';
import { UserService } from './users/user.service';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css'],
  providers:[TicketService,UserService]
})
export class AppComponent {


  constructor() { }

  ngOnInit() {

  }

}

应用模块.ts

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { HttpModule } from '@angular/http';
import { AppComponent } from './app.component';
import { HeaderComponent } from './header/header.component';
import { TicketsComponent } from './tickets/tickets.component';
import { TicketComponent } from './tickets/ticket/ticket.component';
import { TicketDetailComponent } from './tickets/ticket-detail/ticket-detail.component';
import { UpdateTicketComponent } from './tickets/update-ticket/update-ticket.component';
import { Routes, RouterModule } from '@angular/router';
import { CommentsComponent } from './tickets/comments/comments.component';
import { CommentComponent } from './tickets/comments/comment/comment.component';
import {NgxPaginationModule} from 'ngx-pagination';
import { UsersComponent } from './users/users.component';
import { UpdateWindowComponent } from './tickets/update-ticket/update-window/update-window.component';
import { MatDialogModule, MatNativeDateModule } from '@angular/material';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { CreateTicketComponent } from './create/create-ticket.component';


const appRoutes: Routes = [
  {    path: '', component: TicketsComponent  },
  {    path: 'dashboard', component: TicketsComponent  },
  {    path: 'ticket/:id', component: UpdateTicketComponent },
  {    path: 'create', component: CreateTicketComponent }
];

@NgModule({
  declarations: [
    AppComponent,
    HeaderComponent,
    TicketsComponent,
    TicketComponent,
    TicketDetailComponent,
    CreateTicketComponent,
    UpdateTicketComponent,
    CommentsComponent,
    CommentComponent,
    UsersComponent,
    UpdateWindowComponent
    ],
  imports: [
    BrowserModule,
    BrowserAnimationsModule,
    NgxPaginationModule,    
    FormsModule,
    HttpModule,
    MatNativeDateModule,
    ReactiveFormsModule,
    RouterModule.forRoot(appRoutes),
    MatDialogModule
  ],
  providers: [],
  bootstrap: [AppComponent],
  entryComponents: [UpdateWindowComponent,UpdateTicketComponent]

})
export class AppModule { }

header.component.ts

import { Component, OnInit } from '@angular/core';
import { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material';
import { TicketService } from '../tickets/ticket.service';
import { Ticket } from '../tickets/ticket/ticket.model';
import { NgForm } from '@angular/forms';
import { UserService } from '../users/user.service';
import { CreateTicketComponent } from '../create/create-ticket.component';

@Component({
  selector: 'app-header',
  templateUrl: './header.component.html',
  styleUrls: ['./header.component.css']
})
export class HeaderComponent implements OnInit {

  constructor(public dialog: MatDialog, private ticketservice: TicketService,
    private userService: UserService) { }
  comments: any;

  ngOnInit() {
    console.log('Burda');
  }

  ticket:Ticket;
  openCreateDialog() {
    //console.log(this.selectedTicket.ticketName);
    let dialogRef = this.dialog.open(CreateTicketComponent, {
      height: '700px',
      width: '600px'
    });

    dialogRef.afterClosed().subscribe(result => {
      console.log('Burda1');
     /*  console.log("dialogRef.afterClosed => ");
      this.ticket = new Ticket(20,
     'Deneme',
     'Deneme',
     'Deneme',
     'Deneme',
     'Deneme',
      this.userService.getUser(1),
      this.userService.getUser(2),
      this.comments
    );
    this.ticketservice.accessTickets().push(this.ticket); */
    for (let entry of this.ticketservice.accessTickets()) {
      console.log(entry.ticketName);
  }
    });

  }
}

创建.component.ts

import { Component, OnInit, Inject } from '@angular/core';
import { NgForm } from '@angular/forms/src/directives/ng_form';
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material';
import { TicketService } from '../tickets/ticket.service';
import { Ticket } from '../tickets/ticket/ticket.model';
import { User } from '../users/user.model';
import { UserService } from '../users/user.service';

@Component({
  selector: 'app-create-ticket',
  templateUrl: './create-ticket.component.html',
  styleUrls: ['./create-ticket.component.css']
})
export class CreateTicketComponent implements OnInit {

  constructor(private ticketService : TicketService,
    private userService:UserService,
    public dialogRef: MatDialogRef<CreateTicketComponent>,
    @Inject(MAT_DIALOG_DATA) public data: any
  ) { }
  ticket: Ticket;

  comments: any;
  //users: User[] = this.userService.getUsers();
  ngOnInit() {
  }

  onNoClick(): void {
    this.dialogRef.close();
  }

  OnCreate(form: NgForm) {
    const value = form.value;
    console.log('user => ' + value.itemName);
    console.log('this.ticketservice.getIdSequence() => ' + this.ticketService.getIdSequence());
    this.ticket = new Ticket(this.ticketService.getIdSequence(),
      value.itemName,
      value.itemSubject,
      value.itemDescription,
      value.itemStatus,
      value.itemType,
      this.userService.getUser(value.itemAssignee),
      this.userService.getUser(value.itemReporter),
      this.comments
    );
    console.log('user => ' + this.userService.getUser(value.itemAssignee).userFullName);
    this.ticketService.accessTickets().push(this.ticket);
    this.dialogRef.close();

    /* for (let entry of this.ticketservice.getTickets()) {
      console.log(entry.ticketName);
  } */

  }
}

票务服务

import { Ticket } from "./ticket/ticket.model";
import { EventEmitter, Injectable } from "@angular/core";
import { Comment } from "./comments/comment.model";
import { User } from "../users/user.model";

export class TicketService {

  ticketSelected = new EventEmitter<Ticket>();


  nextSeq: number;


  private tickets: Ticket[] = [
    new Ticket(1, 'IT-1001',
      'Lorem ipsum dolor sit amet, consectetur adipiscing elit?',
      'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris ut porta mi. Sed commodo ac enim non egestas. Morbi pellentesque sodales lacus, nec facilisis lorem commodo quis. Aenean in enim vel erat ullamcorper eleifend ac et nisi. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Donec risus dolor, imperdiet non sem sed, luctus rutrum quam. Vestibulum mollis pellentesque nisi, eget porta urna vehicula ac. Phasellus id nulla at purus consectetur ultricies. Ut tempus facilisis nulla eget facilisis. Donec diam magna, bibendum ac aliquet vitae, varius facilisis dui. Quisque sapien urna, gravida nec sem eleifend, sagittis vehicula dolor. Duis eu consectetur purus. Phasellus eu mi quam. Ut id leo vitae erat mollis dictum a ut leo. Proin ut efficitur sapien. Mauris interdum, turpis eget tincidunt consequat, sem lacus bibendum odio, id ultrices sem diam ut nibh.',
      'Open',
      'Task',
      new User(4, 'murata', 'Murat Aydın', '[email protected]', '1234'
      ),
      new User(4, 'murata', 'Murat Aydın', '[email protected]', '1234'
      )
      , []
    ),
    new Ticket(2, 'IT-1002',
      'Etiam velit leo, porttitor ultricies dictum quis, congue eget eros?',
      'Vestibulum suscipit, mauris in dictum sodales, massa libero dapibus mauris, in imperdiet nisl ex in lorem. Quisque commodo in tellus et placerat. Curabitur nec velit sit amet ante molestie ultrices. In nibh justo, vulputate nec vestibulum ut, vehicula id est. Sed quis lorem tristique, volutpat sapien quis, scelerisque leo. Praesent eu vulputate orci. Integer consectetur leo nibh, at dignissim nulla effi',
      'Open',
      'Task',
      new User(4, 'murata', 'Murat Aydın', '[email protected]', '1234'
      ),
      new User(4, 'murata', 'Murat Aydın', '[email protected]', '1234'
      )
      , []
    ),
    new Ticket(3, 'IT-1003',
      'Nam eget eros vulputate, luctus augue eu, tempus tortor?',
      'Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nullam sit amet fermentum leo. Ut tempus ornare ex ut sagittis. Donec vitae lacus eget massa tristique luctus eu quis tellus. Sed ac ligula eu leo consectetur aliquam. Curabitur et dapibus lectus, in auctor massa. Nam nec tellus ac tortor malesuada rutrum. Sed aliquam ut mi sed dapibus. Donec vestibulum ultrices arcu. Vivamus vestibulum et ex non luctus.',
      'Open',
      'Task',
      new User(4, 'murata', 'Murat Aydın', '[email protected]', '1234'
      ),
      new User(4, 'murata', 'Murat Aydın', '[email protected]', '1234'
      )
      , []
    ),
    new Ticket(4, 'IT-1004',
      'Integer porttitor dignissim lacus id vestibulum?',
      'Yaygın inancın tersine, Lorem Ipsum rastgele sözcüklerden oluşmaz. Kökleri M.Ö. 45 tarihinden bu yana klasik Latin edebiyatına kadar uzanan 2000 yıllık bir geçmişi vardır. Virginiadaki Hampden-Sydney Collegedan Latince profesörü Richard McClintock, bir Lorem Ipsum pasajında geçen ve anlaşılması en güç sözcüklerden biri olan consectetur sözcüğünün klasik edebiyattaki örneklerini incelediğinde kesin bir kaynağa ulaşmıştır. Lorm Ipsum, Çiçero tarafından M.Ö. 45 tarihinde kaleme alınan "de Finibus Bonorum et Malorum" (İyi ve Kötünün Uç Sınırları) eserinin 1.10.32 ve 1.10.33 sayılı bölümlerinden gelmektedir. Bu kitap, ahlak kuramı üzerine bir tezdir ve Rönesans döneminde çok popüler olmuştur. Lorem Ipsum pasajının ilk satırı olan "Lorem ipsum dolor sit amet" 1.10.32 sayılı bölümdeki bir satırdan gelmektedir.',
      'Open',
      'Task',
      new User(4, 'murata', 'Murat Aydın', '[email protected]', '1234'
      ),
      new User(4, 'murata', 'Murat Aydın', '[email protected]', '1234'
      )
      , []
    )
    ,
    new Ticket(5, 'IT-1005',
      'Integer porttitor dignissim lacus id vestibulum?',
      'Yaygın inancın tersine, Lorem Ipsum rastgele sözcüklerden oluşmaz. Kökleri M.Ö. 45 tarihinden bu yana klasik Latin edebiyatına kadar uzanan 2000 yıllık bir geçmişi vardır. Virginiadaki Hampden-Sydney Collegedan Latince profesörü Richard McClintock, bir Lorem Ipsum pasajında geçen ve anlaşılması en güç sözcüklerden biri olan consectetur sözcüğünün klasik edebiyattaki örneklerini incelediğinde kesin bir kaynağa ulaşmıştır. Lorm Ipsum, Çiçero tarafından M.Ö. 45 tarihinde kaleme alınan "de Finibus Bonorum et Malorum" (İyi ve Kötünün Uç Sınırları) eserinin 1.10.32 ve 1.10.33 sayılı bölümlerinden gelmektedir. Bu kitap, ahlak kuramı üzerine bir tezdir ve Rönesans döneminde çok popüler olmuştur. Lorem Ipsum pasajının ilk satırı olan "Lorem ipsum dolor sit amet" 1.10.32 sayılı bölümdeki bir satırdan gelmektedir.',
      'Open',
      'Task',
      new User(4, 'murata', 'Murat Aydın', '[email protected]', '1234'
      ),
      new User(4, 'murata', 'Murat Aydın', '[email protected]', '1234'
      )
      , []
    )
    ,
    new Ticket(6, 'IT-1006',
      'Integer porttitor dignissim lacus id vestibulum?',
      'Yaygın inancın tersine, Lorem Ipsum rastgele sözcüklerden oluşmaz. Kökleri M.Ö. 45 tarihinden bu yana klasik Latin edebiyatına kadar uzanan 2000 yıllık bir geçmişi vardır. Virginiadaki Hampden-Sydney Collegedan Latince profesörü Richard McClintock, bir Lorem Ipsum pasajında geçen ve anlaşılması en güç sözcüklerden biri olan consectetur sözcüğünün klasik edebiyattaki örneklerini incelediğinde kesin bir kaynağa ulaşmıştır. Lorm Ipsum, Çiçero tarafından M.Ö. 45 tarihinde kaleme alınan "de Finibus Bonorum et Malorum" (İyi ve Kötünün Uç Sınırları) eserinin 1.10.32 ve 1.10.33 sayılı bölümlerinden gelmektedir. Bu kitap, ahlak kuramı üzerine bir tezdir ve Rönesans döneminde çok popüler olmuştur. Lorem Ipsum pasajının ilk satırı olan "Lorem ipsum dolor sit amet" 1.10.32 sayılı bölümdeki bir satırdan gelmektedir.',
      'Open',
      'Task',
      new User(4, 'murata', 'Murat Aydın', '[email protected]', '1234'
      ),
      new User(4, 'murata', 'Murat Aydın', '[email protected]', '1234'
      )
      , []
    )
    ,
    new Ticket(7, 'IT-1007',
      'Integer porttitor dignissim lacus id vestibulum?',
      'Yaygın inancın tersine, Lorem Ipsum rastgele sözcüklerden oluşmaz. Kökleri M.Ö. 45 tarihinden bu yana klasik Latin edebiyatına kadar uzanan 2000 yıllık bir geçmişi vardır. Virginiadaki Hampden-Sydney Collegedan Latince profesörü Richard McClintock, bir Lorem Ipsum pasajında geçen ve anlaşılması en güç sözcüklerden biri olan consectetur sözcüğünün klasik edebiyattaki örneklerini incelediğinde kesin bir kaynağa ulaşmıştır. Lorm Ipsum, Çiçero tarafından M.Ö. 45 tarihinde kaleme alınan "de Finibus Bonorum et Malorum" (İyi ve Kötünün Uç Sınırları) eserinin 1.10.32 ve 1.10.33 sayılı bölümlerinden gelmektedir. Bu kitap, ahlak kuramı üzerine bir tezdir ve Rönesans döneminde çok popüler olmuştur. Lorem Ipsum pasajının ilk satırı olan "Lorem ipsum dolor sit amet" 1.10.32 sayılı bölümdeki bir satırdan gelmektedir.',
      'Open',
      'Task',
      new User(4, 'murata', 'Murat Aydın', '[email protected]', '1234'
      ),
      new User(4, 'murata', 'Murat Aydın', '[email protected]', '1234'
      )
      , []
    )
    ,
    new Ticket(8, 'IT-1008',
      'Integer porttitor dignissim lacus id vestibulum?',
      'Yaygın inancın tersine, Lorem Ipsum rastgele sözcüklerden oluşmaz. Kökleri M.Ö. 45 tarihinden bu yana klasik Latin edebiyatına kadar uzanan 2000 yıllık bir geçmişi vardır. Virginiadaki Hampden-Sydney Collegedan Latince profesörü Richard McClintock, bir Lorem Ipsum pasajında geçen ve anlaşılması en güç sözcüklerden biri olan consectetur sözcüğünün klasik edebiyattaki örneklerini incelediğinde kesin bir kaynağa ulaşmıştır. Lorm Ipsum, Çiçero tarafından M.Ö. 45 tarihinde kaleme alınan "de Finibus Bonorum et Malorum" (İyi ve Kötünün Uç Sınırları) eserinin 1.10.32 ve 1.10.33 sayılı bölümlerinden gelmektedir. Bu kitap, ahlak kuramı üzerine bir tezdir ve Rönesans döneminde çok popüler olmuştur. Lorem Ipsum pasajının ilk satırı olan "Lorem ipsum dolor sit amet" 1.10.32 sayılı bölümdeki bir satırdan gelmektedir.',
      'Open',
      'Task',
      new User(4, 'murata', 'Murat Aydın', '[email protected]', '1234'
      ),
      new User(4, 'murata', 'Murat Aydın', '[email protected]', '1234'
      )
      , []
    )
    ,
    new Ticket(9, 'IT-1009',
      'Integer porttitor dignissim lacus id vestibulum?',
      'Yaygın inancın tersine, Lorem Ipsum rastgele sözcüklerden oluşmaz. Kökleri M.Ö. 45 tarihinden bu yana klasik Latin edebiyatına kadar uzanan 2000 yıllık bir geçmişi vardır. Virginiadaki Hampden-Sydney Collegedan Latince profesörü Richard McClintock, bir Lorem Ipsum pasajında geçen ve anlaşılması en güç sözcüklerden biri olan consectetur sözcüğünün klasik edebiyattaki örneklerini incelediğinde kesin bir kaynağa ulaşmıştır. Lorm Ipsum, Çiçero tarafından M.Ö. 45 tarihinde kaleme alınan "de Finibus Bonorum et Malorum" (İyi ve Kötünün Uç Sınırları) eserinin 1.10.32 ve 1.10.33 sayılı bölümlerinden gelmektedir. Bu kitap, ahlak kuramı üzerine bir tezdir ve Rönesans döneminde çok popüler olmuştur. Lorem Ipsum pasajının ilk satırı olan "Lorem ipsum dolor sit amet" 1.10.32 sayılı bölümdeki bir satırdan gelmektedir.',
      'Open',
      'Task',
      new User(4, 'murata', 'Murat Aydın', '[email protected]', '1234'
      ),
      new User(4, 'murata', 'Murat Aydın', '[email protected]', '1234'
      )
      , []
    )
    ,
    new Ticket(10, 'IT-1010',
      'Integer porttitor dignissim lacus id vestibulum?',
      'Yaygın inancın tersine, Lorem Ipsum rastgele sözcüklerden oluşmaz. Kökleri M.Ö. 45 tarihinden bu yana klasik Latin edebiyatına kadar uzanan 2000 yıllık bir geçmişi vardır. Virginiadaki Hampden-Sydney Collegedan Latince profesörü Richard McClintock, bir Lorem Ipsum pasajında geçen ve anlaşılması en güç sözcüklerden biri olan consectetur sözcüğünün klasik edebiyattaki örneklerini incelediğinde kesin bir kaynağa ulaşmıştır. Lorm Ipsum, Çiçero tarafından M.Ö. 45 tarihinde kaleme alınan "de Finibus Bonorum et Malorum" (İyi ve Kötünün Uç Sınırları) eserinin 1.10.32 ve 1.10.33 sayılı bölümlerinden gelmektedir. Bu kitap, ahlak kuramı üzerine bir tezdir ve Rönesans döneminde çok popüler olmuştur. Lorem Ipsum pasajının ilk satırı olan "Lorem ipsum dolor sit amet" 1.10.32 sayılı bölümdeki bir satırdan gelmektedir.',
      'Open',
      'Task',
      new User(4, 'murata', 'Murat Aydın', '[email protected]', '1234'
      ),
      new User(4, 'murata', 'Murat Aydın', '[email protected]', '1234'
      )
      , []
    )
    ,
    new Ticket(11, 'IT-1011',
      'Integer porttitor dignissim lacus id vestibulum?',
      'Yaygın inancın tersine, Lorem Ipsum rastgele sözcüklerden oluşmaz. Kökleri M.Ö. 45 tarihinden bu yana klasik Latin edebiyatına kadar uzanan 2000 yıllık bir geçmişi vardır. Virginiadaki Hampden-Sydney Collegedan Latince profesörü Richard McClintock, bir Lorem Ipsum pasajında geçen ve anlaşılması en güç sözcüklerden biri olan consectetur sözcüğünün klasik edebiyattaki örneklerini incelediğinde kesin bir kaynağa ulaşmıştır. Lorm Ipsum, Çiçero tarafından M.Ö. 45 tarihinde kaleme alınan "de Finibus Bonorum et Malorum" (İyi ve Kötünün Uç Sınırları) eserinin 1.10.32 ve 1.10.33 sayılı bölümlerinden gelmektedir. Bu kitap, ahlak kuramı üzerine bir tezdir ve Rönesans döneminde çok popüler olmuştur. Lorem Ipsum pasajının ilk satırı olan "Lorem ipsum dolor sit amet" 1.10.32 sayılı bölümdeki bir satırdan gelmektedir.',
      'Open',
      'Task',
      new User(4, 'murata', 'Murat Aydın', '[email protected]', '1234'
      ),
      new User(4, 'murata', 'Murat Aydın', '[email protected]', '1234'
      )
      , []
    )
  ];


  accessTickets() {
    return this.tickets;
  }

  getTickets() {
    return this.tickets.slice();
  }
  getIdSequence() {
    return this.nextSeq = Object.keys(this.tickets).length + 1
  }

  getTicket(ticketid: number) {
    const ticket: Ticket = this.tickets.find(
      (s) => {
        return s.ticketId == ticketid;
      }
    );
    return ticket;
  }



}

程序结构是 程序结构在这里

yurzui

默认情况下,Angular Material 使用默认的根注入器来创建对话框。

由于您在AppComponent对话框中声明了提供者,因此无法访问这些提供者。

要修复它,您可以ViewContainerRef在对话框配置中传递实例:

export class HeaderComponent {
  constructor(public dialog: MatDialog, private vcRef: ViewContainerRef) { }

  openCreateDialog() {
    let dialogRef = this.dialog.open(CreateTicketComponent, {
      height: '700px',
      width: '600px',
      viewContainerRef: this.vcRef  <================= add this
    });
  }

在这种情况下,角材料将使用config.viewContainerRef.injector而不是默认值:

const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;

https://github.com/angular/components/blob/master/src/material/dialog/dialog.ts#L218

当然,另一种解决方案是TicketServiceAppModule.

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

角度材质对话框未正确显示

来自分类Dev

如何简化角度材质对话框的使用?

来自分类Dev

角度材质对话框未正确显示

来自分类Dev

角度材质对话框 - AGM 贴图

来自分类Dev

全角按钮材质对话框

来自分类Dev

角度自定义材质对话框单元测试

来自分类Dev

如何在角度材质对话框组件内收听mousemove?

来自分类Dev

AngularJS材质对话框不起作用

来自分类Dev

如何创建自定义材质对话框

来自分类Dev

Android材质对话框动作面板高度

来自分类Dev

在片段中使用材质对话框

来自分类Dev

材质对话框按钮单击事件行为异常

来自分类Dev

尽管 display="none" 显示材质对话框

来自分类Dev

材质对话框库-防止在onPositive函数调用时关闭/关闭对话框

来自分类Dev

材质对话框 afterOpened 与 AfterViewInit。在 AfterViewInit 中访问对话框数据是否安全?

来自分类Dev

如何在角度材质对话框内容中显示溢出-x

来自分类Dev

Gradle无法解决Android Studio中的材质对话框依赖关系

来自分类Dev

角8材质对话框关闭按钮,X右上

来自分类Dev

测试 Angular 2 材质对话框组件时出错

来自分类Dev

无法将数据传递到材质对话框 - Angular2+

来自分类Dev

具有多个保存选项的 Angular JS 材质对话框

来自分类Dev

如何在 RecyclerView 适配器中显示材质对话框?

来自分类Dev

删除材质对话框上的奇怪边框

来自分类Dev

在关闭Angular材质对话框之前,检查用户是否对Reactive表单进行了更改

来自分类Dev

在订阅方法中成功添加到数据库后,Angular 6 和 Angular 材质对话框未打开

来自分类Dev

如何相对于按钮放置“角度材质”面板对话框?

来自分类Dev

内联SVG在“角度材质”对话框中无法正确缩放

来自分类Dev

当对话框打开时,“在位编辑”会自动启动–角度材质

来自分类Dev

角度材质无法将数据对象传递给 matdialog 对话框

Related 相关文章

  1. 1

    角度材质对话框未正确显示

  2. 2

    如何简化角度材质对话框的使用?

  3. 3

    角度材质对话框未正确显示

  4. 4

    角度材质对话框 - AGM 贴图

  5. 5

    全角按钮材质对话框

  6. 6

    角度自定义材质对话框单元测试

  7. 7

    如何在角度材质对话框组件内收听mousemove?

  8. 8

    AngularJS材质对话框不起作用

  9. 9

    如何创建自定义材质对话框

  10. 10

    Android材质对话框动作面板高度

  11. 11

    在片段中使用材质对话框

  12. 12

    材质对话框按钮单击事件行为异常

  13. 13

    尽管 display="none" 显示材质对话框

  14. 14

    材质对话框库-防止在onPositive函数调用时关闭/关闭对话框

  15. 15

    材质对话框 afterOpened 与 AfterViewInit。在 AfterViewInit 中访问对话框数据是否安全?

  16. 16

    如何在角度材质对话框内容中显示溢出-x

  17. 17

    Gradle无法解决Android Studio中的材质对话框依赖关系

  18. 18

    角8材质对话框关闭按钮,X右上

  19. 19

    测试 Angular 2 材质对话框组件时出错

  20. 20

    无法将数据传递到材质对话框 - Angular2+

  21. 21

    具有多个保存选项的 Angular JS 材质对话框

  22. 22

    如何在 RecyclerView 适配器中显示材质对话框?

  23. 23

    删除材质对话框上的奇怪边框

  24. 24

    在关闭Angular材质对话框之前,检查用户是否对Reactive表单进行了更改

  25. 25

    在订阅方法中成功添加到数据库后,Angular 6 和 Angular 材质对话框未打开

  26. 26

    如何相对于按钮放置“角度材质”面板对话框?

  27. 27

    内联SVG在“角度材质”对话框中无法正确缩放

  28. 28

    当对话框打开时,“在位编辑”会自动启动–角度材质

  29. 29

    角度材质无法将数据对象传递给 matdialog 对话框

热门标签

归档