首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试从父组件中的mat-dialog角度接收文件

尝试从父组件中的mat-dialog角度接收文件
EN

Stack Overflow用户
提问于 2018-12-07 05:09:26
回答 2查看 703关注 0票数 0

我正在尝试从mat-dialog接收文件,它有文件的输入。但也有一些问题。请帮帮我。

父component.ts:

代码语言:javascript
复制
export class TimelineComponent implements OnInit {
  cvList = [];
  ngOnInit() {
  }
addCv() {
    const dialogNew = this.dialog.open(NewCvDialogComponent, {
      data: {...this.cvList}
    });

    dialogNew.afterClosed().subscribe(result => {
      if (result) {
        this.cvList.push(result);
      }
    });
  }
 }

Mat-对话框component.html:

代码语言:javascript
复制
<div class="dialog">
  <h2 mat-dialog-title>Attach CV</h2>
  <form fxLayout="column" #form="ngForm">
      <input
        type="file"
        accept=".doc,.docx,.txt,.pdf"
        placeholder="Input file"
        name="input-file"
        [(ngModel)]="data.file"
        (change)="addCV($event)"
        required
      />
  </form>
  <div
    mat-dialog-actions
    fxLayout="row nowrap"
    fxLayoutGap="10px"
    class="actions"
  >
    <button
      mat-raised-button
      color="warn"
      [mat-dialog-close]="false"
      fxFlex="50"
    >
      Cancel
    </button>
    <button
      mat-raised-button
      color="primary"
      [mat-dialog-close]="data"
      cdkFocusInitial
      fxFlex="50"
      [disabled]="form.invalid"
    >
      Save
    </button>
  </div>
</div>

但是如果我在结果中使用它,我只能得到文件名。我想接收所有的对象与名称,大小等。我可以怎么做呢?

EN

回答 2

Stack Overflow用户

发布于 2018-12-14 01:41:37

解决了。在对话组件中,我只是添加了一个带有输入文件的变量,并使用mat- dialog -close将其传递给父级

票数 0
EN

Stack Overflow用户

发布于 2020-06-15 19:13:09

您将文件路径设置为字符串,对吗?解决方案是将文件更改为字符串,并将数据传递到父组件

mat-dialogue.component.ts中添加此文件事件函数

代码语言:javascript
复制
      convertTostring(event){


    let reader = new FileReader();

    if(event.target.files && event.target.files.length) {
      const [file] = event.target.files;
      reader.readAsDataURL(file);

      reader.onload = () => {

        this.cvv = reader.result;
      };
    }
  }

mat-dialogue.component.html

并将模板更改为mat-dialog-close="data,cvv"

代码语言:javascript
复制
 <button
  mat-raised-button
  color="primary"
  [mat-dialog-close]="[data, cvv]"
  cdkFocusInitial
  fxFlex="50"
  [disabled]="form.invalid">
  Save
</button>

最后,您可以获得parent.component.ts格式的数据

代码语言:javascript
复制
 addCv() {
    const dialogNew = this.dialog.open(NewCvDialogComponent, {
      data: {...this.cvList}
    });

    dialogNew.afterClosed().subscribe(data => {
      if (result) {
        console.log(data);
      }
    });
  }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53659722

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档