No se pueden restar meses de una fecha de cadena usando la biblioteca de momentos
var str = '2015-10-30'; // date in the string format var dateMoment = moment(str) var result = moment(dateMoment).subtract(12, 'months'); console.log('old date = ', dateMoment) console.log('new date = ', result) <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>¿Puedes verificar en jsfiddle: jsfiddle.net/eshwar70/5f10puqa/9; No está funcionando como se esperaba. Abra las herramientas de desarrollo y verifique. Estoy comprobando en mi navegador que no funciona como se esperaba. –
Solución:
Agregando .format() al final de la función; var resultado = momento(fechaMomento).subtract(12, 'meses').format();
Debe consultar la documentación oficial para comprender cómo funciona su sistema interno. Aquí está la documentación oficial que explica por qué su código no muestra el valor esperado. Básicamente, está diciendo que el objeto del momento es mutable. Entonces, si está restando de la fecha original, en realidad también está cambiando la fecha original. Después de restar, mire cuidadosamente la estructura interna, verá que el valor _d en realidad ha cambiado, y puede ver el resultado usando format() .
var str = '2015-10-30'; var dateMoment = moment(str); var result = dateMoment.clone().subtract(12, 'months').format(); console.log('old date = ', dateMoment.format()) console.log('new date = ', result) <script src="https://momentjs.com/downloads/moment.min.js"></script>Pero tu código funciona perfectamente: 
El resultado es decreciente un año porque le restas 12 meses (1 año). Entonces 2015-10-30 (restar 12 meses) = 2014-10-30