diff --git a/changelog/20907.txt b/changelog/20907.txt
new file mode 100644
index 000000000000..3f13a659de2b
--- /dev/null
+++ b/changelog/20907.txt
@@ -0,0 +1,3 @@
+```release-note:bug
+ui: fixes key_bits and signature_bits reverting to default values when editing a pki role
+```
\ No newline at end of file
diff --git a/ui/app/models/pki/role.js b/ui/app/models/pki/role.js
index bb3d45478aab..621b3f20ced5 100644
--- a/ui/app/models/pki/role.js
+++ b/ui/app/models/pki/role.js
@@ -179,7 +179,7 @@ export default class PkiRoleModel extends Model {
})
keyBits; // no possibleValues because options are dependent on selected key type
- @attr('number', {
+ @attr('string', {
label: 'Signature bits',
subText: `Only applicable for key_type 'RSA'. Ignore for other key types.`,
defaultValue: '0',
diff --git a/ui/lib/core/addon/components/form-field.hbs b/ui/lib/core/addon/components/form-field.hbs
index b3a405fa8bd5..8074a03d55ae 100644
--- a/ui/lib/core/addon/components/form-field.hbs
+++ b/ui/lib/core/addon/components/form-field.hbs
@@ -46,7 +46,7 @@
{{/if}}
{{#each (path-or-array @attr.options.possibleValues @model) as |val|}}
-
{{/each}}
diff --git a/ui/lib/core/addon/helpers/loose-equal.js b/ui/lib/core/addon/helpers/loose-equal.js
new file mode 100644
index 000000000000..07c349c2143d
--- /dev/null
+++ b/ui/lib/core/addon/helpers/loose-equal.js
@@ -0,0 +1,17 @@
+import { helper } from '@ember/component/helper';
+
+/*
+ * use sparingly *
+ ex: logic for an HTML element's selected boolean because