Angular Material:md-select未显示所选选项

问题描述 投票:0回答:1

我正在使用AngularJS和Angular Material开发应用程序。

在模板中,我有:

<md-input-container>
  <label>{{::"Users" | translate }}</label>
  <md-select md-container-class="default-select"
             ng-model="$ctrl.filter.user"
             ng-change="$ctrl.filterPostsByUser()">
    <md-option ng-value="user"
               ng-repeat="user in $ctrl.UsersService.config.users"
               ng-selected="{{user.UserName == $ctrl.filter.currentUser.userName ? 'selected' : ''}}">
      {{ user.userName }}
    </md-option>
  </md-select>
</md-input-container>

在脚本(JavaScript)文件中:

filterPostsByUser() {
 if (this.filter.user) {
  this.userID = this.filter.user.id;
 }
}

[如果我检查md-select元素,则可以看到当前用户的名称(假设为“ John Doe”)选项具有ng-selected="selected",但在视觉上,md-select并未显示“ John Doe”,但是通用的默认占位符“用户”。

缺少什么?

angularjs ecmascript-6 angularjs-material
1个回答
0
投票

也许,以下代码会为您提供帮助>>

class AppController {
  constructor() {
    this.userService = {
      users: [{
          userName: 'John Dow'
        },
        {
          userName: 'Marry Poppins'
        },
        {
          userName: 'Harry Potter'
        }
      ]
    };
    this.filter = {
      user: this.userService.users[0]
    }
  }
}

angular.module('app', ['ngMaterial', 'ngMessages'])
  .controller('appController', AppController);

angular.bootstrap(document.querySelector('#root'), ['app']);
<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/angular_material/1.1.12/angular-material.min.css">
<!-- Angular Material requires Angular.js Libraries -->
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.7.6/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.7.6/angular-animate.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.7.6/angular-aria.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.7.6/angular-messages.min.js"></script>

<!-- Angular Material Library -->
<script src="https://ajax.googleapis.com/ajax/libs/angular_material/1.1.12/angular-material.min.js"></script>

<div id="root" ng-controller="appController as appController">

  <md-input-container>
    <label>Users</label>
    <md-select md-container-class="default-select" ng-model="appController.filter.user" ng-change="$ctrl.filterPostsByUser()">
      <md-option ng-value="user" ng-repeat="user in appController.userService.users">{{ user.userName }}</md-option>
    </md-select>
  </md-input-container>

</div>
© www.soinside.com 2019 - 2024. All rights reserved.