angular-material2 - 无法绑定(bind)到 'dataSource',因为它不是 'mat-tree' 的已知属性

标签 angular-material2

出于某种原因,我收到此错误

Can't bind to 'dataSource' since it isn't a known property of 'mat-tree'.



我不知道如何解决这个问题

我尝试使用 angular material 2 6.0.0-beta.3,这个版本第一次有 TreeView 组件,任何修复这个错误的帮助都会有所帮助。

包.json
  "dependencies": {
    "@angular/animations": "^6.0.0-beta.5",
    "@angular/cdk": "^6.0.0-beta.4",
    "@angular/common": "^6.0.0-beta.5",
    "@angular/compiler": "^6.0.0-beta.5",
    "@angular/core": "^6.0.0-beta.5",
    "@angular/flex-layout": "^2.0.0-beta.12",
    "@angular/forms": "^6.0.0-beta.5",
    "@angular/http": "^6.0.0-beta.5",
    "@angular/material": "^6.0.0-beta.3",
    "@angular/material-moment-adapter": "^6.0.0-beta.5",
    "@angular/platform-browser": "^6.0.0-beta.5",
    "@angular/platform-browser-dynamic": "^6.0.0-beta.5",
    "@angular/router": "^6.0.0-beta.5",
    "@types/three": "^0.89.6",
    "core-js": "^2.4.1",
    "hammerjs": "^2.0.8",
    "moment": "^2.20.1",
    "ng2-truncate": "^1.3.11",
    "orbit-controls-es6": "^1.0.10",
    "rxjs": "^5.5.6",
    "stats.js": "^0.17.0",
    "three": "^0.89.0",
    "three-orbit-controls": "^82.1.0",
    "zone.js": "^0.8.19"
  },

app.component.html
<mat-tree [dataSource]="data" [treeControl]="tc">
    <mat-tree-node *matTreeNodeDef="let node" matTreeNodeToggle>
        <li>
            <div>
                <button mat-icon-button disabled>
          <mat-icon>
            remove
          </mat-icon>
        </button>
        {{node.name}}
            </div>
        </li>
    </mat-tree-node>

    <mat-nested-tree-node *matTreeNodeDef="let node; when: hasChild">
        <li>
            <div class="mat-tree-node">
                <button mat-icon-button matTreeNodeToggle>
          <mat-icon>
            {{tc.isExpanded(node) ? 'expand_more' : 'chevron_right'}}
          </mat-icon>
        </button> {{node.name}}
            </div>
            <ul [hidden]="!tc.isExpanded(node)">
                <ng-container matTreeNodeOutlet></ng-container>
            </ul>
        </li>
    </mat-nested-tree-node>
</mat-tree>

app.component.ts
import { Component, OnInit } from '@angular/core';
import { TreeControl, NestedTreeControl, FlatTreeControl } from '@angular/cdk/tree';
import { of } from 'rxjs/observable/of';

interface TestData {
  name: string;
  // level: number;
  children?: TestData[];
}

// const GetLevel = (node: TestData) => node.level;
// const IsExpandable = (node: TestData) => node.children && node.children.length > 0;
const GetChildren = (node: TestData) => of(node.children);
// const TC = new FlatTreeControl(GetLevel, IsExpandable);
const TC = new NestedTreeControl(GetChildren);


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

  tc = TC;
  data = [
    {
      name: 'a',
      children: [
        { name: 'g' },
        {
          name: 'b',
          children: [
            { name: 'e' },
            { name: 'f' }
          ]
        },
        {
          name: 'c',
          children: [
            { name: 'd' }
          ]
        }
      ]
    }];

  hasChild(_: number, node: TestData) {
    console.log(node);
    return node.children != null && node.children.length > 0;
  }

  constructor() { }

  ngOnInit() {
  }

}

最佳答案

我想你忘了在你的模块中导入 MatTreeModule

import {MatTreeModule} from '@angular/material/tree';

并且不要忘记在装饰器中提及
imports: [
  MatTreeModule
],

关于angular-material2 - 无法绑定(bind)到 'dataSource',因为它不是 'mat-tree' 的已知属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49131420/

相关文章:

css - 如何正确设置 mat-checkbox 的样式

angular - 模板解析错误 : There is no directive with "exportAs" set to "matMenu"

angular - 嵌入式模板上的任何指令均未使用属性绑定(bind) matHeaderRowDef

angular - 带有搜索过滤器的垫选择列表在搜索后不保留选择

Angular Material 2 : mdStepper Header icon bg color change

javascript - Angular 4 | Material 2 - 按钮切换组的突出显示未以编程方式正确更改

angular - 使用 md-slider 选择范围

angular - 我可以在 Angular/Angular Material 中以编程方式移动 mat-h​​orizo​​ntal-stepper 的步骤吗

Angular Material Tabs 不适用于包装器组件

angular - 带有嵌套下拉选项(如 angular1)的 Material 设计 angular2/4 菜单的示例是什么?