'How to avoid attribute-operation-attribute-exists when calling writer.setAttribute() in CKEditor5?

I am developing a simple CKEditor5 plug-in. Part of the plug-in is a "Command" that executes like this:

execute(options) {
    const contentItemUtils = this.editor.plugins.get('ContentItemUtils');
    const contentItemElement = contentItemUtils.getClosestSelectedContentItemElement(this.editor.model.document.selection);

    this.editor.model.change(writer => {
        writer.setAttribute('width', options.width, contentItemElement);
    });
}

The problem happens when I call writer.setAttribute. I always get an error like this:

CKEditorError: attribute-operation-attribute-exists {"node":{"attributes":{"contentId":"CORE08954D2EBB7042799E0A059DC90703DD","contentName":"Paris","contentType":"Destination","contentTypeDisplay":"Destination","contentViewing":"draft","categoryLayout":"overview","detailPageId":"","alignment":""},"name":"contentItem"},"key":"width"}

Read more: https://ckeditor.com/docs/ckeditor5/latest/framework/guides/support/error-codes.html#error-attribute-operation-attribute-exists

What I am trying to do -- set a model attribute to a new value -- seems fairly simple.

Is there a restriction about updating model attributes that already have values?



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source