2017-11-11 52 views
1

我试图用一个MatDialog和基于this example我实现了对话框显示如下:MatDialog不正确

import {Component, Inject, OnInit} from '@angular/core'; 
import {Router} from '@angular/router'; 
import {AuthenticationService} from '../../../service/authentication.service'; 
import {MAT_DIALOG_DATA, MatDialog, MatDialogRef} from '@angular/material'; 

@Component({ 
    selector: 'app-home', 
    templateUrl: './home.component.html', 
    styleUrls: ['./home.component.css'] 
}) 
export class HomeComponent { 

    constructor(private router: Router, public dialog: MatDialog) { } 

    openDialog(): void { 
    const dialogRef = this.dialog.open(CreateGroupDialogComponent); 
    }  
} 

@Component({ 
    selector: 'app-create-group-dialog', 
    template: ` 
    <span>Hello World!</span> 
    ` 
}) 
export class CreateGroupDialogComponent { 
    constructor(public dialogRef: MatDialogRef<CreateGroupDialogComponent>) { } 
} 

然而,即使对话框出现时,我按下相应的按钮,我明白这一点:

enter image description here

HTML模板被不显示和模态的尺寸是错误的。

我没有看到问题所在。为什么模态不正确?

这是打开模式时生成的HTML代码。可以看出它是空的。

enter image description here

+0

当你使用'垫对话框您可能需要'垫对话框的content' -actions' ref。见https://material.angular.io/components/dialog/overview#dialog-content – flamusdiu

+0

@flamusdiu我不认为这是一个要求,但即使我添加它或只是显示一个' Hello World!'这仍然是一样的结果。 – displayname

+0

什么在您的CSS?空? – flamusdiu

回答

3

你需要将它添加到entryComponents@NgModule

import { BrowserModule } from '@angular/platform-browser'; 
import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; 
import { NgModule } from '@angular/core'; 
import { MatDialogModule, MatButtonModule } from '@angular/material'; 

import { AppRoutingModule } from './app-routing.module'; 

import { AppComponent } from './app.component'; 
import { LoginComponent } from './login/login.component'; 
import { HomeComponent, DialogOverviewExampleDialogComponent } from './home/home.component'; 


@NgModule({ 
    declarations: [ 
    AppComponent, 
    LoginComponent, 
    HomeComponent, 
    DialogOverviewExampleDialogComponent 
    ], 
    imports: [ 
    BrowserModule, 
    BrowserAnimationsModule, 
    AppRoutingModule, 
    MatDialogModule, 
    MatButtonModule 
    ], 
    providers: [], 
    bootstrap: [AppComponent], 
    entryComponents: [ 
    DialogOverviewExampleDialogComponent 
    ] 
}) 
export class AppModule { } 

的DUP Angular2 material dialog has issues - Did you add it to @NgModule.entryComponents?

+0

是的,这解决了这个问题 - 谢谢!我刚刚看到这实际上是在[文档](https://material.angular.io/components/dialog/overview)中提到的(我一定忽略了它),但我没有看到[plunker]中的( https://plnkr.co/edit/?p=preview)示例。 – displayname

+1

FWIW,它在控制台中给你一个错误信息,当你打开对话框并且它丢失时,它会告诉你这个错误。 – flamusdiu

+0

对,谢谢你! – displayname