Как правильно использовать filterPredicate - PullRequest
0 голосов
/ 05 июня 2019

сообщение: «рабочие пространства не определены»
stack: «ReferenceError: рабочие пространства не определены» *

У меня есть функция с именем verifyIfHaveThisExactlyWorkspaceName, которая возвращает true или false, если существует или не существует одно и то же имя строки из таблицы.

При вводе на вводе все работает. Я хочу использовать этот же метод в другой метод, передавая строку параметром. У меня проблемы с этим. В обоих случаях T использует значение, которое существует в моей таблице.

В этом случае у меня есть успех

Мой HTML-файл


<mat-form-field class="table-w-div-input">
            <input matInput (keyup)="verifyIfHaveThisExactlyWorkspaceName($event.target.value)" placeholder="Qual assunto você deseja ver?">
</mat-form-field>

мой файл TS


public workspaces: MatTableDataSource<WorkspaceModel>;
    public displayedColumns = [
        'workspace',
        'createdAt',
        'createdBy',
        'updatedAt',
        'updatedBy',
        'button',
    ];

public verifyIfHaveThisExactlyWorkspaceName(workspace: string): boolean {
        debugger
        if (!workspace || !this.workspaces) {
            return false
        }
        workspace = workspace.trim();
        this.workspaces.filter = workspace
        this.workspaces.filterPredicate = (data: WorkspaceModel, workspace) => {
                return data['name'] === workspace;
        }
    }

Но когда T делает это, это не работает. Моя форма не определена (имеет значение)

public workspaces: MatTableDataSource<WorkspaceModel>;
    public displayedColumns = [
        'workspace',
        'createdAt',
        'createdBy',
        'updatedAt',
        'updatedBy',
        'button',
    ];
public executeOperation(content, spreadsheet?: NgForm) {
        if (spreadsheet) {
            this.createWorkspaceWithImport(spreadsheet)
        }
        else if (this.workspace) {
            this.updateWorkspace()
        }
        else if (!spreadsheet && !this.workspace) {
            if (this.verifyIfHaveThisExactlyWorkspaceName(this.workspaceForm.value.name)) {                
                this.activeModal = this.modalService.open(content, { centered: true, size: 'lg' });                
            }
        }
    }

public verifyIfHaveThisExactlyWorkspaceName(workspace: string): boolean {
        debugger
        if (!workspace || !this.workspaces) {
            return false
        }
        workspace = workspace.trim();
        this.workspaces.filter = workspace
        this.workspaces.filterPredicate = (data: WorkspaceModel, workspace) => {
                return data['name'] === workspace;
        }
    }

Моя рабочая областьМодель

import { User } from '../../user/user.actions';


export interface WorkspaceModel {

    createdAt: Date;
    createdBy: User | null;
    db: boolean;
    description: string;
    language: string;
    learning_opt_out: boolean;
    name: string;
    updatedAt: Date;
    updatedBy: User | null;
    watson: boolean;
    _id: string;
    activated: boolean;
    master: string | null;
}

Я хочу использовать свою функцию в обоих случаях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...