我有一个带有排序标题的普通Angular Material 2 DataTable.所有排序都是标题工作正常.除了具有对象作为值的那个.这些根本不排序.
例如:
<!-- Project Column - This should sort!-->
<ng-container matColumnDef="project.name">
<mat-header-cell *matHeaderCellDef mat-sort-header> Project Name </mat-header-cell>
<mat-cell *matCellDef="let element"> {{element.project.name}} </mat-cell>
</ng-container>
Run Code Online (Sandbox Code Playgroud)
请注意 element.project.name
这是displayColumn配置:
displayedColumns = ['project.name', 'position', 'name', 'test', 'symbol'];
Run Code Online (Sandbox Code Playgroud)
更改'project.name'
到'project'
不工作,也不"project['name']"
我错过了什么?这甚至可能吗?
这是Stackblitz: Angular Material2 DataTable排序对象
编辑: 谢谢你的所有答案.我已经使用动态数据了.所以我不必为每个新的嵌套属性添加switch语句.
这是我的解决方案:(创建一个扩展MatTableDataSource的新DataSource不是必需的)
export class NestedObjectsDataSource extends MatTableDataSource<MyObjectType> {
sortingDataAccessor: ((data: WorkingHours, sortHeaderId: string) => string | number) =
(data: WorkingHours, sortHeaderId: string): string | number => {
let value = null;
if …
Run Code Online (Sandbox Code Playgroud) 我从Eclipse导入了一个Android项目到Andriod Studio,但是当我编译时,我得到了这些错误.他们的意思是什么?
Gradle: : org.gradle.api.plugins.PluginInstantiationException: Could not create plugin of type 'AppPlugin'.
Gradle: : java.lang.NoClassDefFoundError: org/gradle/tooling/provider/model/ToolingModelBuilderRegistry
Gradle: : java.lang.ClassNotFoundException: org.gradle.tooling.provider.model.ToolingModelBuilderRegistry
Run Code Online (Sandbox Code Playgroud)
我不认为它与我的代码有任何关系,因为它在Eclipse中都有效.另一方面,我在Android Studio中创建了其他项目来运行.导出或导入项目时我做错了什么?
是否可以在Android中对SeekBar或ProgressBar使用数据绑定?我有这个数据元素:
<data>
<variable
name="foo"
type="com.example.Foo" />
</data>
Run Code Online (Sandbox Code Playgroud)
如果我在TextField中引用变量foo.bar(它是一个int),它按预期工作:
<TextView
android:text="@{String.valueOf(foo.bar)}"
[...]
Run Code Online (Sandbox Code Playgroud)
我试图做的是这样的:
<SeekBar
android:progress="@{foo.bar}"
[...]
Run Code Online (Sandbox Code Playgroud)
但它没有得到承认.(只要我在引号之间写了一个"@",它就会在编辑器中变成红色).还有另一种数据绑定方式吗?
我正试图在我的ngFor内的复选框上设置默认值.这是我的复选框项目数组:
tags = [{
name: 'Empathetic',
checked: false
}, {
name: 'Smart money',
checked: true
}, {
name: 'Minimal help after writing check',
checked: false
}, {
name: 'Easy term sheet',
checked: true
}];
Run Code Online (Sandbox Code Playgroud)
这是我的HTML
<div class="form-group">
<div class="form-check" *ngFor="let tag of tags;">
<label class="form-check-label" for="tag{{tag.value}}">
<input
class="form-check-input"
type="checkbox"
id="tag{{tag.value}}"
name="tagOptions"
[(ngModel)]="tag.checked">
{{tag.name}}
</label>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
所需的结果是获得2个选中,2个未选中的框,但所有这些框都未选中.我也尝试了[checked] ="tag.checked"的不同变体,但它似乎没有做到这一点.
我的应用程序中有一个微调器,我实现如下:
//Setup spinner
spinner = (AppCompatSpinner) findViewById(R.id.toolbar_spinner);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.sections, R.layout.spinner_item);
adapter.setDropDownViewResource(R.layout.spinner_list_item);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
mViewPager.setCurrentItem(position);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
mViewPager.setCurrentItem(0);
}
});
Run Code Online (Sandbox Code Playgroud)
这适用于我的手机运行API级别19(4.4.2),但在Marshmallow,API级别23(6.0)上运行,从不调用onItemSelected.
我已尝试使用android.widget.Spinner和android.support.v7.widget.AppCompatSpinner同样的结果.
知道为什么吗?
标题说明了一切.我找到了一些答案(关于回调等等),但我不知道如何将它应用到我的代码中.
问题:如何$( "#layout-grid" ).load(layout);
在执行下一行之前等待完成?
最后一行的警报不会在第一次执行时显示,因为$( "#layout-grid" ).load(layout);
尚未完成加载.但是,警报会在第二次执行时正确显示.
function setLayout(selectedLayout) {
layout += selectedLayout;
$( "#layout-grid" ).load(layout); // this load is not finished yet before alert
var top_level_div = document.getElementById('layout');
var count = top_level_div.getElementsByTagName('div').length;
alert(count);
}
Run Code Online (Sandbox Code Playgroud) android ×3
angular ×2
checkbox ×1
data-binding ×1
gradle ×1
javascript ×1
jquery ×1
ngfor ×1
typescript ×1